if ($err = objet_modifier_champs('evenement', $id_evenement,
array(
+ 'data' => $set,
'nonvide' => array('titre' => _T('info_nouvel_evenement')." "._T('info_numero_abbreviation').$id_evenement),
'invalideur' => $invalideur,
'indexation' => $indexation,
--- /dev/null
+<?php
+/**
+ * Plugin Agenda 4 pour Spip 3.0
+ * Licence GPL 3
+ *
+ * 2006-2011
+ * Auteurs : cf paquet.xml
+ */
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+
+function action_supprimer_evenement_participant_dist()
+{
+ $securiser_action = charger_fonction('securiser_action', 'inc');
+ $arg = $securiser_action();
+ list($id_evenement,$id_evenement_participant) = explode('-',$arg);
+ include_spip('inc/autoriser');
+ if (intval($id_evenement) AND autoriser('modifier','evenement',$id_evenement)){
+ if(intval($id_evenement_participant) ){
+ sql_delete('spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_evenement_participant='.intval($id_evenement_participant));
+ } else if($id_evenement_participant=='tous'){
+ sql_delete('spip_evenements_participants','id_evenement='.intval($id_evenement));
+ }
+ }
+ return true;
+}
+
+
+?>
\ No newline at end of file
array('sql_drop_table',"spip_mots_evenements"),
array('sql_alter',"TABLE spip_evenements ADD statut varchar(10) DEFAULT 0 NOT NULL"),
);
+
$maj['0.25.0'] = array(
array('upgrade_evenements_statut_025'),
);
+
+ $maj['0.26.0'] = array(
+ array('maj_tables',array('spip_evenements')),
+ array('sql_update',"spip_evenements", array('date_creation'=>'maj')),
+ );
+
+ $maj['0.27.0'] = array(
+ // modification de la cle primaire (id_evenement,id_auteur) : les participants peuvent ne pas être des auteurs
+ // ajout d'une clé primaire "neutre" auto-incrémentée
+ array('sql_alter','TABLE spip_evenements_participants DROP PRIMARY KEY'),
+ array('sql_alter','TABLE spip_evenements_participants ADD id_evenement_participant BIGINT(21) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST'),
+ array('maj_tables',array('spip_evenements_participants')),
+ );
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
--- /dev/null
+<?php
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+// brancher le plugin sur nospam
+$GLOBALS['formulaires_no_spam'][] = 'participer_evenement';
\ No newline at end of file
include_spip("inc/config");
$cfg = (defined('_AGENDA_INSERT_HEAD_CSS')?_AGENDA_INSERT_HEAD_CSS:lire_config("agenda/insert_head_css"));
if ($cfg){
- $flux .= '<link rel="stylesheet" href="'.find_in_path("css/spip.agenda.css").'" />';
+ $flux .= '<link rel="stylesheet" type="text/css" href="'.find_in_path("css/spip.agenda.css").'" />';
}
}
return $flux;
while ($row = sql_fetch($res))
sql_updateq("spip_evenements",array('statut'=>'poubelle'),"id_article=".$row['id_article']);
- // Evenements a la pouvelle
+ // Evenements a la poubelle
sql_delete("spip_evenements", "statut='poubelle' AND maj < ".$flux['args']['date']);
include_spip('action/editer_liens');
return $heritages;
}
+/**
+ * Insertion dans le pipeline revisions_chercher_label (Plugin révisions)
+ * Trouver le bon label à afficher sur les champs dans les listes de révisions
+ *
+ * Si un champ est un champ extra, son label correspond au label défini du champs extra
+ *
+ * @pipeline revisions_chercher_label
+ * @param array $flux Données du pipeline
+ * @return array Données du pipeline
+**/
+function agenda_revisions_chercher_label($flux){
+ foreach(array('date_debut', 'date_fin','horaire','lieu') as $champ){
+ if($flux['args']['champ'] == $champ){
+ $flux['data'] = _T('agenda:evenement_'.$champ);
+ return $flux;
+ }
+ }
+
+ if($flux['args']['champ'] == 'id_article')
+ $flux['data'] = _T('agenda:evenement_article');
+
+ return $flux;
+}
?>
\r
//-- Table des participants ----------------------\r
$spip_evenements_participants = array(\r
+ "id_evenement_participant" => "BIGINT(21) NOT NULL AUTO_INCREMENT",\r
"id_evenement" => "BIGINT (21) DEFAULT '0' NOT NULL",\r
"id_auteur" => "BIGINT (21) DEFAULT '0' NOT NULL",\r
+ "nom" => "text NOT NULL DEFAULT ''",\r
+ "email" => "tinytext NOT NULL DEFAULT ''",\r
"date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",\r
"reponse" => "char(3) default '?' NOT NULL", // oui, non, ?\r
);\r
\r
$spip_evenements_participants_key = array(\r
- "PRIMARY KEY" => "id_evenement, id_auteur",\r
+ "PRIMARY KEY" => "id_evenement_participant",\r
+ "KEY id_evenement" => "id_evenement",\r
"KEY id_auteur" => "id_auteur");\r
\r
$tables_auxiliaires['spip_evenements_participants'] = array(\r
"horaire" => "varchar(3) DEFAULT 'oui' NOT NULL",\r
"id_evenement_source" => "bigint(21) NOT NULL",\r
"statut" => "varchar(10) DEFAULT '0' NOT NULL",\r
- "maj" => "TIMESTAMP"\r
+ "maj" => "TIMESTAMP",\r
+ "date_creation" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"\r
),\r
'key' => array(\r
"PRIMARY KEY" => "id_evenement",\r
'poubelle' => 'texte_statut_poubelle',\r
),\r
'texte_changer_statut' => 'agenda:texte_evenement_statut',\r
- 'champs_versionnes' => array('id_article', 'titre', 'descriptif', 'lieu', 'adresse'),\r
+ 'champs_versionnes' => array('id_article', 'titre', 'descriptif', 'lieu', 'adresse', 'date_debut', 'date_fin', 'horaire'),\r
\r
);\r
\r
return $tables;\r
}\r
\r
+\r
?>
\ No newline at end of file
#ACTION_FORMULAIRE{#ENV{action}}
<input type='hidden' name='id_evenement' value='#ID_EVENEMENT' />
<input type='hidden' name='id_parent' value='#ENV{id_parent}' />
- <ul>
- <li class="editer_titre obligatoire[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]">
+ <ul>
+ <li class="editer editer_titre obligatoire[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]">
<label for="titre"><:agenda:evenement_titre:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span>
]<input type='text' class='text' name='titre' id='titre' value="#ENV{titre}" />
</li>
- <li class='editer_parent[ (#ENV**{erreurs}|table_valeur{id_parent}|oui)erreur]'>
- <label for="id_parent"><:agenda:evenement_article:></label>[
- <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_parent})</span>
- ]<INCLURE{fond=formulaires/selecteur/articles}{selected=#ENV{parents_id}}{id_article=#ENV{id_parent}}{name=parents_id}{select=1}{rubriques=0}>
- </li>
- <li class='editer_date fieldset'><fieldset><legend><:agenda:evenement_date:></legend>
+ <li class='editer editer_parent[ (#ENV**{erreurs}|table_valeur{id_parent}|oui)erreur]'>
+ <label for="id_parent"><:agenda:evenement_article:></label>[
+ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_parent})</span>
+ ]<INCLURE{fond=formulaires/selecteur/articles}{selected=#ENV{parents_id}}{id_article=#ENV{id_parent}}{name=parents_id}{select=1}{rubriques=0}>
+ </li>
+ <li class='editer editer_date fieldset'><fieldset><legend><:agenda:evenement_date:></legend>
<ul>
- <li class="editer_horaire[ (#ENV**{erreurs}|table_valeur{horaire}|oui)erreur]">
+ <li class="editer editer_horaire[ (#ENV**{erreurs}|table_valeur{horaire}|oui)erreur]">
<label for="horaire"><:agenda:evenement_horaire:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{horaire})</span>
]<input type='checkbox' name='horaire' id='horaire' value='non' [(#ENV{horaire}|=={oui}|non)checked='checked']
onclick="if (this.checked==false) { $('span.afficher_horaire').show();} else {$('span.afficher_horaire').hide();}" />
</li>
- <li class="editer_date_debut_fin[ (#ENV**{erreurs}|table_valeur{date_debut}|oui)erreur][ (#ENV**{erreurs}|table_valeur{date_fin}|oui)erreur]">
+ <li class="editer editer_date_debut_fin[ (#ENV**{erreurs}|table_valeur{date_debut}|oui)erreur][ (#ENV**{erreurs}|table_valeur{date_fin}|oui)erreur]">
[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{date_debut})</span>][
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{date_fin})</span>
/></span><input type='text' class='text date' name='date_fin' id='date_fin' size='10' maxlength='10' value="[(#ENV{date_fin})]" />
</li>
</ul>
- </fieldset></li>
- <li class="editer_repetitions[ (#ENV**{erreurs}|table_valeur{repetitions}|oui)erreur]">
+ </fieldset></li>
+ <li class="editer editer_repetitions[ (#ENV**{erreurs}|table_valeur{repetitions}|oui)erreur]">
<label for="repetitions"><:agenda:evenement_repetitions:></label>[
(#ENV{repetitions}|non)<a href='#' onclick="$(this).hide().next().show('fast');return false;"><:agenda:ajouter_repetition:></a>
<div class='ajouter_repetitions none'>][
<textarea name='repetitions' id='repetitions'>#ENV{repetitions}</textarea>[
(#ENV{repetitions}|non)</div>]
</li>
- <li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{descriptif}|oui)erreur]">
+ <li class="editer editer_descriptif[ (#ENV**{erreurs}|table_valeur{descriptif}|oui)erreur]">
<label for="descriptif"><:agenda:evenement_descriptif:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{descriptif})</span>
]<textarea name='descriptif' rows='5' id='descriptif' class="inserer_barre_edition">[(#ENV{descriptif})]</textarea>
- </li>[
- (#ENV{affiche_inscription,oui}|=={oui}|oui)
- <li class="editer_inscription[ (#ENV**{erreurs}|table_valeur{inscription}|oui)erreur]">
- <div class='choix inscription'>
- [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{inscription})</span>]
- <input type='checkbox' class='checkbox' name='inscription' id='inscription' value="1"[ (#ENV{inscription}|oui)checked="checked"] />
- <label for="inscription"><:agenda:label_inscription:></label>
- </div><div class='choix places'>
- <label for="places"><:agenda:label_places:></label>[
- <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{places})</span>
- ]<input type='text' class='text' name='places' id='places' value="[(#ENV{places})]" />
+ </li>[
+ (#ENV{affiche_inscription,oui}|=={oui}|oui)
+ <li class="editer editer_inscription[ (#ENV**{erreurs}|table_valeur{inscription}|oui)erreur]">
+ <div class='choix inscription'>
+ [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{inscription})</span>]
+ <input type='checkbox' class='checkbox' name='inscription' id='inscription' value="1"[ (#ENV{inscription}|oui)checked="checked"] />
+ <label for="inscription"><:agenda:label_inscription:></label>
+ </div><div class='choix places'>
+ <label for="places"><:agenda:label_places:></label>[
+ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{places})</span>
+ ]<input type='text' class='text' name='places' id='places' value="[(#ENV{places})]" />
</div>
- </li>]
- <li class="editer_lieu[ (#ENV**{erreurs}|table_valeur{lieu}|oui)erreur]">
+ </li>]
+ <li class="editer editer_lieu[ (#ENV**{erreurs}|table_valeur{lieu}|oui)erreur]">
<label for="lieu"><:agenda:evenement_lieu:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{lieu})</span>
]<input type='text' class='text' name='lieu' id='lieu' value="[(#ENV{lieu})]" />
- </li>
- <li class="editer_adresse[ (#ENV**{erreurs}|table_valeur{adresse}|oui)erreur]">
+ </li>
+ <li class="editer editer_adresse[ (#ENV**{erreurs}|table_valeur{adresse}|oui)erreur]">
<label for="adresse"><:agenda:evenement_adresse:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{adresse})</span>
]<textarea name='adresse' rows='3' id='adresse'>[(#ENV{adresse})]</textarea>
- </li>
- </ul>
- [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
- <!--extra-->
- <p class='boutons'><input type='submit' class='submit' value='[(#ENV{id_evenement}|?{<:bouton_enregistrer:>,<:bouton_ajouter:>})]' /></p>
+ </li>
+ </ul>
+ [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+ <!--extra-->
+ <p class='boutons'><input type='submit' class='submit' value='[(#ENV{id_evenement}|?{<:bouton_enregistrer:>,<:bouton_ajouter:>})]' /></p>
</div></form>
#INCLURE{fond=formulaires/dateur/inc-dateur}
]
</div>
<script type="text/javascript">
+ // Si changement de date_début, on change date_fin uniquement si inférieure à date_début
+ jQuery('#date_debut').on('change', function(){
+ var debut_date = jQuery('#date_debut').datepicker("getDate");
+ var debut_stamp = debut_date.getTime();
+ var fin_stamp = jQuery('#date_fin').datepicker("getDate").getTime();
+
+ if (debut_stamp > fin_stamp) {
+ jQuery('#date_fin').val(jQuery(this).val());
+ jQuery('#date_fin').datepicker( "option", "minDate", new Date(debut_date));
+ }
+ });
var repetitions_done = false;
jQuery(document).bind('datePickerLoaded',function(){
if (!repetitions_done){
$valeurs['horaire'] = 'oui';
// Pouvoir interdire l'affichage de l'inscription (puisque ce n'est pas traite' par le plugin)
- $valeurs['affiche_inscription'] = $GLOBALS['agenda_affiche_inscription'];
+ $valeurs['affiche_inscription'] = isset($GLOBALS['agenda_affiche_inscription']) ? $GLOBALS['agenda_affiche_inscription'] : false;
$valeurs['places'] = intval($valeurs['places']);
function formulaires_editer_evenement_verifier_dist($id_evenement='new', $id_article=0, $retour='', $lier_trad = 0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
$erreurs = formulaires_editer_objet_verifier('evenement',$id_evenement,array('titre','date_debut','date_fin'));
-
include_spip('inc/date_gestion');
$horaire = _request('horaire')=='non'?false:true;
- $date_debut = verifier_corriger_date_saisie('debut',$horaire,$erreurs);
- $date_fin = verifier_corriger_date_saisie('fin',$horaire,$erreurs);
+ if(!$erreurs['date_debut'])
+ $date_debut = verifier_corriger_date_saisie('debut',$horaire,$erreurs);
+ if(!$erreurs['date_fin'])
+ $date_fin = verifier_corriger_date_saisie('fin',$horaire,$erreurs);
if ($date_debut AND $date_fin AND $date_fin<$date_debut)
$erreurs['date_fin'] = _T('agenda:erreur_date_avant_apres');
include_spip('formulaires/selecteur/selecteur_fonctions');
if (count($id = picker_selected(_request('parents_id'),'article'))
- AND $id = reset($id)
- AND $id = sql_getfetsel('id_article','spip_articles','id_article='.intval($id))){
- // reinjecter dans id_parent
- set_request('id_parent',$id);
+ AND $id = reset($id)
+ AND $id = sql_getfetsel('id_article','spip_articles','id_article='.intval($id))){
+ // reinjecter dans id_parent
+ set_request('id_parent',$id);
}
if (!$id_parent = intval(_request('id_parent')))
// si c'est une creation dans un article publie, passer l'evenement en publie
// l'article peut être renseigné/modifié par l'utilisateur dans le formulaire. On le retrouve.
if (!intval($id_evenement)
- AND $id_article = sql_getfetsel('id_article', 'spip_evenements', 'id_evenement='.$res['id_evenement'])
- AND objet_test_si_publie('article',$id_article)){
+ AND $id_article = sql_getfetsel('id_article', 'spip_evenements', 'id_evenement='.$res['id_evenement'])
+ AND objet_test_si_publie('article',$id_article)){
// sera refuse si auteur pas autorise
evenement_modifier($res['id_evenement'],array('statut'=>'publie'));
}
+ // a la creation, documenter la date de creation
+ if (!intval($id_evenement))
+ evenement_modifier($res['id_evenement'],array('date_creation'=>date('Y-m-d H:i:s')));
+
$id_evenement = $res['id_evenement'];
if ($res['redirect']) {
if (strpos($res['redirect'],'article')!==false){
+++ /dev/null
-<div class="formulaire_spip formulaire_#FORM" >
- [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
- [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
- <form method='post' action='#ENV{action}'><div>
- #ACTION_FORMULAIRE{#ENV{action}}
- <div class="over"><span class='image_loading'> </span><input type='submit' class='submit' value='<:bouton_changer:>' /></div>
-
- <INCLURE{fond=prive/objets/liste/evenement_participants}{env}>
-
- </div></form>
-</div>
-<script type="text/javascript">/*<![CDATA[*/
-jQuery('.formulaire_evenement_participants .delete').click(function(){jQuery(this).parents('tr').eq(0).animateRemove();});
-jQuery('.formulaire_evenement_participants .append').animateAppend();
-/*]]>*/</script>
+++ /dev/null
-<?php
-/**
- * Plugin Agenda 4 pour Spip 3.0
- * Licence GPL 3
- *
- * 2006-2011
- * Auteurs : cf paquet.xml
- */
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- *
- * @return array
- */
-function formulaires_evenement_participants_charger_dist($evenement,$tri){
-
- if (autoriser('voir','evenement',$evenement)) {
- $valeurs = array(
- 'id_evenement'=>$evenement,
- 'tri_inscrits'=>$tri,
- 'supprimer_lien'=>''
- );
- }
-
- return $valeurs;
-}
-
-/**
- * Traiter le post des informations de suppression d'inscription
- *
- * @param string $a
- * @param bool $editable
- * @return array
- */
-function formulaires_evenement_participants_traiter_dist($a,$editable=true){
-
- $supprimer = _request('supprimer_lien');
-
- if ($supprimer){
- foreach($supprimer as $k=>$v) {
- if ($lien = lien_verifier_action($k,$v)){
- $lien = explode("-",$lien);
- list($objet_source,$ids,$objet_lie,$idl) = $lien;
- if(autoriser('modifier','evenement',$ids)){
- if ($idl=="*") sql_delete("spip_evenements_participants", "id_evenement=$ids");
- else sql_delete("spip_evenements_participants", "id_evenement=$ids and id_auteur=$idl");
- }
- }
- }
- }
-
- return $res;
-}
-
-/**
- * Fonction issue de prive/formulaires/editer_liens.php
- *
- * Les formulaires envoient une action dans un tableau ajouter_lien
- * ou supprimer_lien
- * L'action est de la forme
- * objet1-id1-objet2-id2
- *
- * L'action peut etre indiquee dans la cle, ou dans la valeur
- * Si elle est indiquee dans la valeur, et que la cle est non numerique,
- * on ne la prend en compte que si un submit avec la cle a ete envoye
- *
- * @param string $k
- * @param string $v
- * @return string
- */
-function lien_verifier_action($k,$v){
- if (preg_match(",^\w+-[\w*]+-[\w*]+-[\w*]+,",$k))
- return $k;
- if (preg_match(",^\w+-[\w*]+-[\w*]+-[\w*]+,",$v)){
- if (is_numeric($k))
- return $v;
- if (_request($k))
- return $v;
- }
- return '';
-}
-?>
(#VAL|chercher_rubrique{0,#ENV{id_parent},'article',0,0,0,form_simple})
</li>]
#SET{name,toute_la_branche}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
- <li class="editer long_label editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
+ <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
#SET{val,oui}
$message .= sinon(singulier_ou_pluriel($nba,'info_1_article','info_nb_articles'),_T('info_aucun_article'));
$erreurs['confirmer'] = $message;
+ $erreurs['message_erreur'] = ''; // pas de message automatique
}
return $erreurs;
<div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id,#ENV{id_evenement}}">
[(#ENV{editable}|non)
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
- [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV**{message_erreur})</p>]
- ]
+ [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV**{message_erreur})</p>]]
[(#ENV{editable})
- <form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
+ <form method='post' action='#ENV{action}#vevent' enctype='multipart/form-data'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<fieldset><legend><:agenda:label_vous_inscrire:></legend>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
- <ul>
- <li class="saisie_reponse[ (#ENV**{erreurs}|table_valeur{reponse}|oui)erreur]">
+ <ul>
+ [(#SESSION{statut}|oui)
+ [<li><:nom:> <strong>(#SESSION{nom}|typo)</strong> <span class="details">[<a href="#URL_LOGOUT" rel="nofollow"><:icone_deconnecter:></a>]</span></li>]
+ ]
+ [(#SESSION{statut}|non)
+ <li class="saisie_reponse[ (#ENV**{erreurs}|table_valeur{nom}|oui)erreur]">
+ <label for="nom_#FORM"><:entree_nom_pseudo_2:></label>
+ [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{nom})</span>]
+ <input type='text' class='text' name='nom' id='nom_#FORM' value="#ENV{nom}" />
+ </li>
+ <li class="saisie_reponse[ (#ENV**{erreurs}|table_valeur{email}|oui)erreur]">
+ <label for="email_#FORM"><:entree_adresse_email_2:></label>
+ <span class="explication"><:agenda:evenement_participant_email_mention:></span>
+ [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{email})</span>]
+ <input type='text' class='text' name='email' id='email_#FORM' value="#ENV{email}" />
+ </li>
+ ]
+ <li class="saisie_reponse[ (#ENV**{erreurs}|table_valeur{reponse}|oui)erreur]">
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{reponse})</span>]
- <div class='choix'>
+ <div class='choix'>
<input type='radio' class='radio' name='reponse' id='reponse_oui' value="oui"[ (#ENV{reponse}|=={oui}|oui)checked="checked"] />
<label for="reponse_oui"><:agenda:label_reponse_jyparticipe:></label>
</div>
- <div class='choix'>
+ <div class='choix'>
<input type='radio' class='radio' name='reponse' id='reponse_peutetre' value="?"[ (#ENV{reponse}|=={?}|oui)checked="checked"] />
<label for="reponse_peutetre"><:agenda:label_reponse_jyparticipe_peutetre:></label>
</div>
- <div class='choix'>
+ <div class='choix'>
<input type='radio' class='radio' name='reponse' id='reponse_non' value="non"[ (#ENV{reponse}|=={non}|oui)checked="checked"] />
<label for="reponse_non"><:agenda:label_reponse_jyparticipe_pas:></label>
</div>
- </li>
- </ul>
- </fieldset>
- [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
- <!--extra-->
- <p class='boutons'><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
- </div></form>
- ]
+ </li>
+ </ul>
+ </fieldset>
+ [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+ <!--extra-->
+ <p class='boutons'><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
+ </div></form>]
</div>
include_spip('inc/actions');
include_spip('inc/editer');
-function formulaires_participer_evenement_charger_dist($id_evenement){
- $valeurs = array();
+function formulaires_participer_evenement_charger_dist($id_evenement, $mode=''){
+ $valeurs = array(
+ 'nom' => isset($GLOBALS['visiteur_session']['id_auteur']) ? $GLOBALS['visiteur_session']['nom'] : _request('nom'),
+ 'email' => isset($GLOBALS['visiteur_session']['id_auteur']) ? $GLOBALS['visiteur_session']['email'] : _request('email'),
+ 'reponse' => _request('reponse'),
+ );
// si pas d'evenement ou d'inscription, on echoue silencieusement
if (!$row = sql_fetsel('inscription,places','spip_evenements','id_evenement='.intval($id_evenement).' AND date_fin>NOW()')
- OR !$row['inscription'])
+ OR !$row['inscription'])
return false;
// si anonyme, on echoue avec avertissement
- if (!$GLOBALS['visiteur_session']['id_auteur'])
+ if ($mode!='public' && (!isset($GLOBALS['visiteur_session']['id_auteur']) || !$GLOBALS['visiteur_session']['id_auteur']))
return array(
'message_erreur'=>_T('agenda:connexion_necessaire_pour_inscription'),
'editable'=>false
// valeurs d'initialisation
$valeurs['id'] = $id_evenement;
- $valeurs['reponse'] = sql_getfetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']));
+ if(isset($GLOBALS['visiteur_session']['id_auteur']))
+ $valeurs['reponse'] = sql_getfetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']));
// si les places sont comptees, regarder si il en reste
if ($places = $row['places']){
// on multiplie tout par 2 pour eviter les troncatures ($total ne sert de toute facon que dans les tests)
$total = 2*$ok+$peutetre;
if ($total>=2*$places){
- // dans ce cas, le formulaire est editable seulement si l'auteur a deja repondu oui ou peut-etre, et peut changer d'avis !
- if (!($valeurs['reponse']=='oui' OR $valeurs['reponse']=='?')){
+ // dans ce cas, le formulaire est editable seulement si l'auteur a deja repondu oui ou peut-etre, et peut changer d'avis !
+ if (!($valeurs['reponse']=='oui' OR $valeurs['reponse']=='?')){
$valeurs['editable'] = false;
$valeurs['message_ok'] = _T('agenda:evenement_complet');
}
return $valeurs;
}
-function formulaires_participer_evenement_verifier_dist($id_evenement){
+function formulaires_participer_evenement_verifier_dist($id_evenement, $mode=''){
$erreurs = array();
$reponse = _request('reponse');
+ $nom = _request('nom');
+ $email = _request('email');
// Le test de la ligne suivante sert a savoir si la reponse est vide, non?
// On vient juste de la recuperer ci-dessus, pas la peine de la reaffecter...
if (!($reponse) OR !in_array($reponse,array('oui','non','?')))
$erreurs['reponse'] = _T('agenda:indiquez_votre_choix');
- elseif ($reponse!=='non') {
+ elseif ($mode=='public' AND !isset($GLOBALS['visiteur_session']['id_auteur'])) {
+ // nom et email sont obligatoires
+ if (!$nom)
+ $erreurs['nom'] = _T('info_obligatoire');
+ if (!$email)
+ $erreurs['email'] = _T('info_obligatoire');
+ // pas de double inscription avec le même email
+ if (sql_fetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND email='.sql_quote($email))) {
+ $erreurs['email'] = _T('erreur_email_deja_existant');
+ }
+ } elseif ($reponse!=='non' && isset($GLOBALS['visiteur_session']['id_auteur'])) {
$row = sql_fetsel('places','spip_evenements','id_evenement='.intval($id_evenement));
$valeurs['reponse'] = sql_getfetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']));
if ($places = $row['places'] AND $valeurs['reponse']!==$reponse){
// on multiplie tout par 2 pour eviter les troncatures ($total ne sert de toute facon que dans les tests)
$total = 2*$ok+$peutetre;
if (
- // Si on est au taquet, le seul cas autorise restant (la reponse NON et la reponse identique sont prises
- // en compte dans les tests ci-dessus) est: transformation d'un OUI en PEUT-ETRE (-0,5)
- ($total>=2*$places AND !($valeurs['reponse']=='oui' AND $reponse=='?'))
- OR
- // Si il reste un siege PEUT-ETRE, le seul cas interdit restant est: transformation d'un NON en OUI (+1)
- ($total==2*$places-1 AND ($valeurs['reponse']=='non' AND $reponse=='oui'))
- ){
- $erreurs['reponse'] = _T('agenda:plus_de_place');
+ // Si on est au taquet, le seul cas autorise restant (la reponse NON et la reponse identique sont prises
+ // en compte dans les tests ci-dessus) est: transformation d'un OUI en PEUT-ETRE (-0,5)
+ ($total>=2*$places AND !($valeurs['reponse']=='oui' AND $reponse=='?'))
+ OR
+ // Si il reste un siege PEUT-ETRE, le seul cas interdit restant est: transformation d'un NON en OUI (+1)
+ ($total==2*$places-1 AND ($valeurs['reponse']=='non' AND $reponse=='oui'))){
+ $erreurs['reponse'] = _T('agenda:plus_de_place');
}
}
}
function formulaires_participer_evenement_traiter_dist($id_evenement){
$reponse = _request('reponse');
- if (sql_fetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']))){
- sql_updateq('spip_evenements_participants',array('reponse'=>$reponse),'id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']));
- }
- else
- sql_insertq('spip_evenements_participants',array('id_evenement'=>$id_evenement,'id_auteur'=>$GLOBALS['visiteur_session']['id_auteur'],'reponse'=>$reponse,'date'=>'NOW()'));
-
- $retour = array('editable'=>true);
- if (!$reponse = sql_getfetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']))
- OR $reponse!=_request('reponse')){
- $retour['message_erreur'] = _T('agenda:probleme_technique');
- }
- else {
- if ($reponse=='oui')
- $message = _T('agenda:participation_prise_en_compte');
- elseif ($reponse=='?')
- $message = _T('agenda:participation_incertaine_prise_en_compte');
- else
- $message = _T('agenda:absence_prise_en_compte');
- }
- return array('message_ok'=>$message,'editable'=>true);
+ $nom = _request('nom');
+ $email = _request('email');
+
+ if(isset($GLOBALS['visiteur_session']['id_auteur'])){
+ $editable = true;
+ if (sql_fetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur'])))
+ sql_updateq('spip_evenements_participants',array('reponse'=>$reponse,'date'=>'NOW()'),'id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']));
+ else
+ sql_insertq('spip_evenements_participants',array('id_evenement'=>$id_evenement,'id_auteur'=>$GLOBALS['visiteur_session']['id_auteur'],'reponse'=>$reponse,'date'=>'NOW()'));
+ } else {
+ $editable = false;
+ sql_insertq('spip_evenements_participants',array('id_evenement'=>$id_evenement,'nom'=>$nom,'email'=>$email,'reponse'=>$reponse,'date'=>'NOW()'));
+ }
+ if ($reponse == 'oui')
+ $message = _T('agenda:participation_prise_en_compte');
+ elseif ($reponse == '?')
+ $message = _T('agenda:participation_incertaine_prise_en_compte');
+ else
+ $message = _T('agenda:absence_prise_en_compte');
+
+ include_spip('inc/invalideur');
+ suivre_invalideur("id='evenement/$id_evenement'");
+
+ return array('message_ok'=>$message,'editable'=>$editable);
}
?>
\ No newline at end of file
BEGIN:VEVENT
SUMMARY:[(#EVTITRE|textebrut|filtrer_ical)]
UID:evenement#ID_EVENEMENT @ [(#URL_SITE_SPIP|filtrer_ical)][
-DTSTAMP:(#DATE_DEBUT|date_ical)][(#HORAIRE|=={oui}|?{[
+DTSTAMP:(#DATE_CREATION|date_ical)][(#HORAIRE|=={oui}|?{[
DTSTART:(#DATE_DEBUT|date_ical)][
DTEND:(#DATE_FIN|date_ical)],[
DTSTART;VALUE=DATE:(#DATE_DEBUT|affdate{Ymd})][
DTEND;VALUE=DATE:(#DATE_FIN|agenda_jourdecal{1,Ymd})]})][
+CREATED:(#DATE_CREATION|date_ical)][
+LAST-MODIFIED:(#MAJ|date_ical)][
LOCATION:(#LIEU|PtoBR|textebrut|filtrer_ical)][
DESCRIPTION:(#DESCRIPTIF|supprimer_tags|textebrut|filtrer_ical)]
CATEGORIES:<BOUCLE_article(ARTICLES) {id_article=#ID_ARTICLE}>[(#TITRE|textebrut|filtrer_ical)]</BOUCLE_article>
-URL:[(#URL_ARTICLE|parametre_url{id_evenement,#ID_EVENEMENT}|url_absolue|filtrer_ical)]
-STATUS:CONFIRMED
+URL:[(#URL_ARTICLE|parametre_url{id_evenement,#ID_EVENEMENT}|url_absolue|filtrer_ical)]<BOUCLE_sequence(VERSIONS ?){objet=evenement}{id_objet=#ID_EVENEMENT}{!par id_version}{0,1}>[
+SEQUENCE:(#ID_VERSION|moins{1})
+]</BOUCLE_sequence>STATUS:CONFIRMED
END:VEVENT
--- /dev/null
+<style type="text/css">
+.hover-title { color: black; border: 1px solid #888; padding: 3px; background-color: #DDD; position: absolute; bottom: 0; border-radius: 3px; width: auto; width: 200%; opacity: .9; }
+.fc-event-inner { background-color: #E0ECFF; }
+.fc-header-title { margin: auto 1em; }
+#fullcalendar_#ID_MOT-#ID_RUBRIQUE { position: relative; margin: 1em auto; padding: 1em; [(#LARGEUR|is_null|non)width: #LARGEURpx;] }
+</style>
+
+#SET{data,#ARRAY}
+<BOUCLE_articles(ARTICLES) {id_mot ?} {id_rubrique ?} {par date} {inverse} ><BOUCLE_événements(EVENEMENTS) {id_article} >[
+(#SET{événement,#ARRAY{title,'',hover,#TITRE,start,#DATE_DEBUT,end,#DATE_FIN,id,#ID_ARTICLE,url,#URL_ARTICLE}})][
+(#SET{data,#GET{data}|push{#GET{événement}}})
+]</BOUCLE_événements></BOUCLE_articles>
+
+[(#SET{json_data,#GET{data}|json_encode{2}})]
+
+<div id="fullcalendar_#ID_MOT-#ID_RUBRIQUE"></div>
+
+#SET{français,0}
+[(#LANG|is_null|oui)#SET{français,1}]
+[(#LANG|=={fr}|oui)#SET{français,1}]
+
+<script type="text/javascript">
+$(function() {
+ $.getScript('#CHEMIN{lib/fullcalendar/fullcalendar.min.js}', function() {
+ $('head').append('<link rel="stylesheet" type="text/css" media="screen" href="#CHEMIN{lib/fullcalendar/fullcalendar.css}">');
+ $('head').append('<link rel="stylesheet" type="text/css" media="print" href="#CHEMIN{lib/fullcalendar/fullcalendar.print.css}">');
+ var data = #GET{json_data};
+ $('#fullcalendar_#ID_MOT-#ID_RUBRIQUE').fullCalendar({
+ header: {
+ left: '',
+ center: 'prev,title,next',
+ right: ''
+ },
+ [(#ENV{hauteur}|is_null|non)height: #HAUTEUR,]
+
+ monthNames:['<:date_mois_1|attribut_html:>','<:date_mois_2|attribut_html:>','<:date_mois_3|attribut_html:>','<:date_mois_4|attribut_html:>','<:date_mois_5|attribut_html:>','<:date_mois_6|attribut_html:>','<:date_mois_7|attribut_html:>','<:date_mois_8|attribut_html:>','<:date_mois_9|attribut_html:>','<:date_mois_10|attribut_html:>','<:date_mois_11|attribut_html:>','<:date_mois_12|attribut_html:>'],
+ monthNamesShort:['<:date_mois_1_abbr|attribut_html:>','<:date_mois_2_abbr|attribut_html:>','<:date_mois_3_abbr|attribut_html:>','<:date_mois_4_abbr|attribut_html:>','<:date_mois_5_abbr|attribut_html:>','<:date_mois_6_abbr|attribut_html:>','<:date_mois_7_abbr|attribut_html:>','<:date_mois_8_abbr|attribut_html:>','<:date_mois_9_abbr|attribut_html:>','<:date_mois_10_abbr|attribut_html:>','<:date_mois_11_abbr|attribut_html:>','<:date_mois_12_abbr|attribut_html:>'],
+ dayNames:['<:date_jour_1|attribut_html:>','<:date_jour_2|attribut_html:>','<:date_jour_3|attribut_html:>','<:date_jour_4|attribut_html:>','<:date_jour_5|attribut_html:>','<:date_jour_6|attribut_html:>','<:date_jour_7|attribut_html:>'],
+ dayNamesShort:['<:date_jour_1_abbr|attribut_html:>','<:date_jour_2_abbr|attribut_html:>','<:date_jour_3_abbr|attribut_html:>','<:date_jour_4_abbr|attribut_html:>','<:date_jour_5_abbr|attribut_html:>','<:date_jour_6_abbr|attribut_html:>','<:date_jour_7_abbr|attribut_html:>'],
+ buttonText: {
+ prev: "<span class='fc-text-arrow'>‹</span>",
+ next: "<span class='fc-text-arrow'>›</span>",
+ prevYear: "<span class='fc-text-arrow'>«</span>",
+ nextYear: "<span class='fc-text-arrow'>»</span>",
+ today: '<:date_aujourdhui|attribut_html:>',
+ month: '<:cal_par_mois|attribut_html:>',
+ day: '<:cal_par_jour|attribut_html:>',
+ week: '<:cal_par_semaine|attribut_html:>'
+ },
+ // time formats
+ titleFormat: {
+ month: 'MMMM yyyy',
+ week: "d MMM[ yyyy]{ '—'d[ MMM] yyyy}",
+ day: 'dddd, d MMM, yyyy'
+ },
+ columnFormat: {
+ month: 'ddd',
+ week: 'ddd d/M',
+ day: 'dddd d/M'
+ },
+ firstDay: 1,
+ events: data,
+ defaultView: '[(#VUE|=={semaine}|?{week,month})]',
+ // events: data,
+ eventMouseover: function(event, jsEvent, view) {
+ $('.fc-event-inner', this).append('<div id=\"'+event.id+'\" class=\"hover-title\" style=\"\">'+event.hover+'</div>');
+ },
+ eventMouseout: function(event, jsEvent, view) {
+ $('#'+event.id).remove();
+ },
+ eventClick: function(event) {
+ console.log(event);
+ if (false) {
+ var url = '/?page=location_donnees&who=direction_scientifique&id_location=' + mrbs_ids[event.id];
+ var win=window.open(url, '_blank');
+ win.focus();
+ }
+ }
+ })
+ });
+});
+</script>
--- /dev/null
+<BOUCLE_inscrits_oui(evenements_participants){id_evenement=#ENV{id,#ENV{id_evenement}}}{reponse='oui'}>
+</BOUCLE_inscrits_oui>#SET{inscrits,#TOTAL_BOUCLE}</B_inscrits_oui>
+
+<B_inscrits>
+ #ANCRE_PAGINATION
+ <table class='spip liste'>
+ [<caption>(#GRAND_TOTAL|singulier_ou_pluriel{agenda:info_une_reponse,agenda:info_nb_reponses,nb})[,
+ (#GET{inscrits}|singulier_ou_pluriel{agenda:info_un_inscrit,agenda:info_nb_inscrits,nb})]</caption>]
+ <thead>
+ <tr class='first_row'>
+ <th scope='col'><:nom:></th>
+ <th scope='col'><:agenda:evenement_date_inscription:></th>
+ <th scope='col'><:agenda:info_reponse_inscriptions:></th>
+ </tr>
+ </thead>
+ <tbody>
+ <BOUCLE_inscrits(evenements_participants){id_evenement=#ENV{id,#ENV{id_evenement}}}{par date}{inverse}{pagination #ENV{nb,15}}>
+ <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+ <td>[(#NOM|sinon{#INFO_NOM{auteur,#ID_AUTEUR}})]</td>
+ <td>[(#DATE|affdate_jourcourt)]</td>
+ <td>
+ [(#REPONSE|=={'oui'}|oui)<:agenda:label_reponse_jyparticipe:>]
+ [(#REPONSE|=={'non'}|oui)<:agenda:label_reponse_jyparticipe_pas:>]
+ [(#REPONSE|=={'?'}|oui)<:agenda:label_reponse_jyparticipe_peutetre:>]
+ </td>
+ </tr>
+ </BOUCLE_inscrits>
+ </tbody>
+ </table>
+ [<p class='pagination'>(#PAGINATION)</p>]
+</B_inscrits>
<traduction module="agenda" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/agenda/trunk/lang/" reference="fr">
- <langue code="de" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=de">
+ <langue code="de" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=de" total="123" traduits="123" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="Rainer Müller" lien="http://trad.spip.net/auteur/rainer-muller" />
+ <traducteur nom="Torsten Willmann" lien="http://trad.spip.net/auteur/torsten-willmann" />
</langue>
- <langue code="en" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=en">
+ <langue code="en" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=en" total="123" traduits="123" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
<traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
</langue>
- <langue code="es" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=es">
- <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+ <langue code="es" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=es" total="123" traduits="123" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+ <traducteur nom="severo" lien="http://trad.spip.net/auteur/severo" />
</langue>
- <langue code="fr" />
- <langue code="sk" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=sk">
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=fr" total="123" traduits="123" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=nl" total="123" traduits="123" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+ <langue code="ru" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=ru" total="123" traduits="123" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="olly" lien="http://trad.spip.net/auteur/olly" />
+ </langue>
+ <langue code="sk" url="http://trad.spip.net/tradlang_module/agenda?lang_cible=sk" total="123" traduits="123" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
</langue>
</traduction>
'agenda' => 'Kalender',
'ajouter_repetition' => 'Wiederholungen hinzufügen',
'ajouter_un_evenement' => 'diesem Artikel ein Event hinzufügen',
- 'annee_precedente' => 'Jahr davor', # MODIF
+ 'annee_precedente' => 'Jahr davor',
'annee_suivante' => 'Jahr danach',
'aucun_evenement' => 'Kein Event',
- 'aucun_inscrit' => 'Aucun inscrit', # NEW
+ 'aucun_inscrit' => 'Keine Anmeldung',
'aucune_rubrique_mode_agenda' => 'In der Grundeinstellung können Events in alle Rubriken eingetragen werden. Wenn sie den Kalender gezielt für eine oder mehrere Rubriken aktivieren, dann steht ihnen der Kalender nur für diese Rubriken zur Verfügung.',
// B
'bouton_supprimer' => 'Löschen',
// C
+ 'cal_par_jour' => 'Tag',
+ 'cal_par_mois' => 'Monat',
+ 'cal_par_semaine' => 'Woche',
'confirm_suppression_inscription' => 'Wollen sie diese Anmeldung wirklich löschen?',
- 'confirm_suppression_inscription_toutes' => 'Voulez-vous vraiment supprimer toutes les inscriptions ?', # NEW
- 'connexion_necessaire_pour_inscription' => 'Merci de <a href=\'#LOGIN_PUBLIC\'>vous connecter</a> pour pouvoir vous inscrire à cet événement.', # NEW
+ 'confirm_suppression_inscription_toutes' => 'Wollen Sie wirklich alle Anmeldungen löschen?',
+ 'connexion_necessaire_pour_inscription' => 'Um sich für den Event anmelden zu können müssen Sie sich anmelden.',
'creer_evenement' => 'Event neu anlegen',
+ // D
+ 'date_fmt_agenda_label' => '<b class="day">@jour@</b> <b class="month">@mois@</b> <b class="year">@annee@</b>',
+
// E
'erreur_article_interdit' => 'Sie dürfen dieses Event nicht diesem Artikel zuordnen',
'erreur_article_manquant' => 'Sie müssen einen Artikel angeben',
'evenement_date_debut' => 'Anfangsdatum',
'evenement_date_du' => 'Vom ',
'evenement_date_fin' => 'Enddatum',
- 'evenement_date_inscription' => 'Date d\'inscription', # NEW
+ 'evenement_date_inscription' => 'Anmeldedatum',
'evenement_descriptif' => 'Beschreibung',
'evenement_horaire' => 'ganztägig',
'evenement_lieu' => 'Ort',
+ 'evenement_participant_email_mention' => 'Um in kontakt zu bleiben benötigen wir Ihre E-Mail-Adresse. Diese wird nicht veröffentlicht',
'evenement_repetitions' => 'Wiederholungen',
'evenement_titre' => 'Titel',
- 'evenements' => 'Event',
+ 'evenements' => 'Events',
'evenements_a_venir' => 'In der Zukunft',
'evenements_depuis_debut' => 'Alle',
+ 'explication_synchro_flux_ical' => 'Das Plugin Agenda beinhaltet eine iCal Feed der Events. Einige Klienten aktualisieren Termine nur, wenn eine Versionsnummer haben (die Änderungen anzeigt) im Feed enthalten ist. Um diese Versionsnummer in den iCal-Feed zu integrieren muss die Versionskontrolle für Events aktiviert werden (im Menu Konfiguration > Versionen).',
+ 'explication_synchro_flux_ical_titre' => 'Synchronisation des iCal Feed',
// F
'fermer' => 'Schließen',
// I
'icone_creer_evenement' => 'Neue Veranstaltung anlegen',
'icone_modifier_evenement' => 'Event Bearbeiten',
- 'indiquez_votre_choix' => 'Indiquez votre choix', # NEW
- 'info_1_mois' => '1 mois', # NEW
+ 'indiquez_votre_choix' => 'Geben Sie Ihre Auswahl an',
+ 'info_1_mois' => '1 Monat',
'info_1_place' => '1 Platz',
'info_aucun_evenement' => 'Kein Event',
'info_evenement' => 'Event',
'info_evenement_propose' => 'Event vorgeschlagen',
'info_evenement_publie' => 'Event veröffentlicht',
'info_evenements' => 'Event',
- 'info_inscription' => 'Inscription en ligne :', # NEW
+ 'info_inscription' => 'Online Anmeldung:',
'info_lieu' => 'Ort:',
- 'info_nb_inscrits' => '@nb@ inscrits', # NEW
- 'info_nb_mois' => '@nb@ mois', # NEW
+ 'info_nb_inscrits' => '@nb@ Anmeldungen',
+ 'info_nb_mois' => '@nb@ Monate',
'info_nb_places' => '@nb@ Plätze',
+ 'info_nb_reponses' => '@nb@ Rückmeldungen',
'info_nombre_evenements' => '@nb@ Events',
'info_nouvel_evenement' => 'Neues Event',
'info_reponse_inscription_non' => 'nein',
'info_reponse_inscription_nsp' => '?',
'info_reponse_inscription_oui' => 'ja',
- 'info_reponse_inscriptions' => 'Réponse', # NEW
+ 'info_reponse_inscriptions' => 'Rückmeldung',
'info_reponses_inscriptions' => 'Antworten',
'info_un_evenement' => 'ein Event',
- 'info_un_inscrit' => 'Un inscrit', # NEW
+ 'info_un_inscrit' => 'Eine Anmeldung',
+ 'info_une_reponse' => 'Eine Rückmeldung',
'inscrits' => 'Anmeldungen',
// L
- 'label_annee' => 'Année', # NEW
+ 'label_annee' => 'Jahr',
'label_inscription' => 'Online-Anmeldungen',
- 'label_periode_saison' => 'Saison', # NEW
+ 'label_periode_saison' => 'Saison',
'label_places' => 'Maximale Anzahl Plätze',
'label_reponse_jyparticipe' => 'Ich komme',
'label_reponse_jyparticipe_pas' => 'Ich komme nicht',
'label_reponse_jyparticipe_peutetre' => 'Ich komem vielleicht',
'label_vous_inscrire' => 'Ihre Teilnahme',
'lien_desinscrire' => 'Entfernen',
- 'lien_desinscrire_tous' => 'Supprimer toutes les inscriptions', # NEW
+ 'lien_desinscrire_tous' => 'Alle Anmeldungen löschen',
'lien_retirer_evenement' => 'Löschen',
'liste_inscrits' => 'Liste der Anmeldungen',
// R
'repetition' => 'Wiederholung',
'repetition_de' => 'Wiederholung von',
- 'retour_evenement' => 'Retour à l\'événement', # NEW
+ 'retour_evenement' => 'Zurück zum Event',
'rubrique_activer_agenda' => 'Kalender für diese Rubrik aktivieren',
'rubrique_dans_une_rubrique_mode_agenda' => 'Diese Rubrik kann den Kalender nutzen, denn sie befindet sich innerhalb einer Rubrik, für die den Kalende nutzen darf.',
'rubrique_desactiver_agenda' => 'Kalender in dieser Rubrik deaktivieren',
'sans_titre' => '(ohne Titel)',
// T
- 'telecharger' => 'Herunterladen', # MODIF
- 'telecharger_oui' => 'Seulement les réponses positives', # NEW
- 'telecharger_toutes' => 'Toutes les réponses', # NEW
- 'telecharger_toutes_tous_evenements' => 'Toutes les réponses aux inscriptions', # NEW
- 'texte_agenda' => 'KALENDER', # MODIF
+ 'telecharger' => 'Herunterladen',
+ 'telecharger_oui' => 'Nur positive Rückmeldungen',
+ 'telecharger_toutes' => 'Alle Rückmeldungen',
+ 'telecharger_toutes_tous_evenements' => 'Alle Rückmeldungen zu Anmeldungen',
+ 'texte_agenda' => 'KALENDER',
'texte_evenement_statut' => 'Dieses Event ist',
- 'texte_logo_objet' => 'EVENT-LOGO', # MODIF
+ 'texte_logo_objet' => 'EVENT-LOGO',
'titre_cadre_ajouter_evenement' => 'Event hinzufügen',
'titre_cadre_modifier_evenement' => 'Event umändern',
'titre_sur_l_agenda' => 'Im Kalender',
- 'titre_sur_l_agenda_aussi' => 'Et aussi...', # NEW
+ 'titre_sur_l_agenda_aussi' => 'Außerdem...',
'toutes_rubriques' => 'Alle',
// U
'bouton_supprimer' => 'Delete',
// C
+ 'cal_par_jour' => 'day',
+ 'cal_par_mois' => 'month',
+ 'cal_par_semaine' => 'week',
'confirm_suppression_inscription' => 'Are you sure you want to delete this registration?',
'confirm_suppression_inscription_toutes' => 'Do you really want to delete all registrations?',
'connexion_necessaire_pour_inscription' => 'Please log in to register to this event.',
'creer_evenement' => 'Create an event',
+ // D
+ 'date_fmt_agenda_label' => '<b class="month">@mois@</b> <b class="day">@jour@</b> <b class="year">@annee@</b>',
+
// E
'erreur_article_interdit' => 'You have no right to associate this event to this article',
'erreur_article_manquant' => 'You should link to an article',
'evenement_descriptif' => 'Description',
'evenement_horaire' => 'All day',
'evenement_lieu' => 'Location',
+ 'evenement_participant_email_mention' => 'To stay in contact, you should submit your email address. It will not be communicated on the site.',
'evenement_repetitions' => 'Repetition',
'evenement_titre' => 'Title',
'evenements' => 'Events',
'evenements_a_venir' => 'Next',
'evenements_depuis_debut' => 'All',
+ 'explication_synchro_flux_ical' => 'Plugin Agenda supplies a flow of events in iCal format. Certain clients do not update an event unless a version number (also indicating any modification) is present in the flow. In order to have this number included in the generated iCal flow, you can activate revisions for events (Configuration menu > Revisions).',
+ 'explication_synchro_flux_ical_titre' => 'Synchronisation of iCal flow',
// F
'fermer' => 'close',
'info_nb_inscrits' => '@nb@ registered',
'info_nb_mois' => '@nb@ months',
'info_nb_places' => '@nb@ seats',
+ 'info_nb_reponses' => '@nb@ replies',
'info_nombre_evenements' => '@nb@ events',
'info_nouvel_evenement' => 'New event',
'info_reponse_inscription_non' => 'no',
'info_reponses_inscriptions' => 'Answers:',
'info_un_evenement' => 'One event',
'info_un_inscrit' => 'One registered',
+ 'info_une_reponse' => 'One reply',
'inscrits' => 'Registrations',
// L
'label_inscription' => 'Online registration',
'label_periode_saison' => 'Season',
'label_places' => 'Limit the seats number',
- 'label_reponse_jyparticipe' => 'I\'ll be there',
- 'label_reponse_jyparticipe_pas' => 'I won\'t be there',
- 'label_reponse_jyparticipe_peutetre' => 'Maybe I\'ll be there',
+ 'label_reponse_jyparticipe' => 'I’ll be there',
+ 'label_reponse_jyparticipe_pas' => 'I won’t be there',
+ 'label_reponse_jyparticipe_peutetre' => 'Maybe I’ll be there',
'label_vous_inscrire' => 'Your participation',
'lien_desinscrire' => 'Remove',
'lien_desinscrire_tous' => 'Delete all registrations',
'telecharger_toutes_tous_evenements' => 'All answers to registrations',
'texte_agenda' => 'Agenda',
'texte_evenement_statut' => 'This event is:',
- 'texte_logo_objet' => 'Event\'s logo',
+ 'texte_logo_objet' => 'Event’s logo',
'titre_cadre_ajouter_evenement' => 'Add one event',
'titre_cadre_modifier_evenement' => 'Modify one event',
'titre_sur_l_agenda' => 'On agenda',
'une_repetition' => '1 repetition',
// V
- 'voir_evenements_rubrique' => 'See this section\'s events'
+ 'voir_evenements_rubrique' => 'See this section’s events'
);
?>
'bouton_supprimer' => 'Eliminar',
// C
+ 'cal_par_jour' => 'día',
+ 'cal_par_mois' => 'mes',
+ 'cal_par_semaine' => 'semana',
'confirm_suppression_inscription' => '¿Desea realmente eliminar esta inscripción?',
'confirm_suppression_inscription_toutes' => '¿Desea realmente eliminar todas las inscripciones?',
- 'connexion_necessaire_pour_inscription' => 'Gracias por <a href=\'#LOGIN_PUBLIC\'>conectarse</a> para poder inscribirse a este evento.',
+ 'connexion_necessaire_pour_inscription' => 'Gracias por conectarse para poder inscribirse a este evento.',
'creer_evenement' => 'Crear un evento',
+ // D
+ 'date_fmt_agenda_label' => '<b class="day">@jour@</b> <b class="month">@mois@</b> <b class="year">@annee@</b>',
+
// E
'erreur_article_interdit' => 'No tiene permiso para asociar este evento a este artículo',
'erreur_article_manquant' => 'Debe indicar un artículo',
'evenement_date' => 'Fecha',
'evenement_date_a' => 'a las ',
'evenement_date_a_immediat' => 'a las ',
- 'evenement_date_au' => 'Al',
+ 'evenement_date_au' => 'Al ',
'evenement_date_de' => 'De ',
'evenement_date_debut' => 'Fecha de inicio',
'evenement_date_du' => 'Del ',
'evenement_descriptif' => 'Descripción',
'evenement_horaire' => 'Todo el día',
'evenement_lieu' => 'Lugar',
+ 'evenement_participant_email_mention' => 'Para quedar en contact, indique su dirección mail. No sera publicada en el sitio.',
'evenement_repetitions' => 'Repeticiones',
'evenement_titre' => 'Título',
'evenements' => 'Eventos',
'evenements_a_venir' => 'Próximos',
'evenements_depuis_debut' => 'Desde el inicio',
+ 'explication_synchro_flux_ical' => 'El plugin Agenda proporciona una fuente de eventos en formato iCal. Algunos clientes sólo actualizan un evento si un número de versión (indicando así que ha habido una actualización) está presente en esta fuente. Para que este número de versión se integre en la fuente iCal generado, debe activar el seguimiento de las revisiones para los eventos (menú Configuración > Revisiones).',
+ 'explication_synchro_flux_ical_titre' => 'Sincronización de la fuente iCal',
// F
'fermer' => 'cerrar',
'info_nb_inscrits' => '@nb@ inscritos',
'info_nb_mois' => '@nb@ meses',
'info_nb_places' => '@nb@ plazas',
+ 'info_nb_reponses' => '@nb@ respuestas',
'info_nombre_evenements' => '@nb@ eventos',
'info_nouvel_evenement' => 'Nuevo evento',
'info_reponse_inscription_non' => 'no',
'info_reponses_inscriptions' => 'Respuestas:',
'info_un_evenement' => '1 evento',
'info_un_inscrit' => 'Un inscrito',
+ 'info_une_reponse' => 'Una respuesta',
'inscrits' => 'Inscripciones',
// L
'annee_suivante' => 'année suivante',
'aucun_evenement' => 'aucun événement',
'aucun_inscrit' => 'Aucun inscrit',
- 'aucune_rubrique_mode_agenda' => 'Par défaut, toutes les rubriques permettent d\'utiliser les événements. Si vous activez le mode agenda sur une ou plusieurs rubriques, la gestion des événements sera limitée a sa branche.',
+ 'aucune_rubrique_mode_agenda' => 'Par défaut, toutes les rubriques permettent d’utiliser les événements. Si vous activez le mode agenda sur une ou plusieurs rubriques, la gestion des événements sera limitée a sa branche.',
// B
'bouton_annuler' => 'Annuler',
'bouton_supprimer' => 'Supprimer',
// C
- 'confirm_suppression_inscription' => 'Voulez-vous vraiment supprimer cette inscription ?',
- 'confirm_suppression_inscription_toutes' => 'Voulez-vous vraiment supprimer toutes les inscriptions ?',
+ 'cal_par_jour' => 'jour',
+ 'cal_par_mois' => 'mois',
+ 'cal_par_semaine' => 'semaine',
+ 'confirm_suppression_inscription' => 'Voulez-vous vraiment supprimer cette inscription ?',
+ 'confirm_suppression_inscription_toutes' => 'Voulez-vous vraiment supprimer toutes les inscriptions ?',
'connexion_necessaire_pour_inscription' => 'Merci de vous connecter pour pouvoir vous inscrire à cet événement.',
'creer_evenement' => 'Créer un événement',
+ // D
+ 'date_fmt_agenda_label' => '<b class="day">@jour@</b> <b class="month">@mois@</b> <b class="year">@annee@</b>',
+
// E
- 'erreur_article_interdit' => 'Vous n\'avez pas le droit d\'associer cet événement à cet article',
+ 'erreur_article_interdit' => 'Vous n’avez pas le droit d’associer cet événement à cet article',
'erreur_article_manquant' => 'Vous devez indiquer un article',
'erreur_date' => 'Cette date est incorrecte',
- 'erreur_date_avant_apres' => 'Indiquez une date de fin après la date de début !',
+ 'erreur_date_avant_apres' => 'Indiquez une date de fin après la date de début !',
'erreur_date_corrigee' => 'La date a été corrigée',
'erreur_heure' => 'Cette heure est incorrecte',
- 'erreur_heure_corrigee' => 'L\'heure a été corrigée',
+ 'erreur_heure_corrigee' => 'L’heure a été corrigée',
'evenement_adresse' => 'Adresse',
- 'evenement_article' => 'Associé à l\'article',
- 'evenement_autres_occurences' => 'Autres occurences :',
+ 'evenement_article' => 'Associé à l’article',
+ 'evenement_autres_occurences' => 'Autres occurences :',
'evenement_date' => 'Date',
'evenement_date_a' => 'à ',
'evenement_date_a_immediat' => 'à ',
'evenement_date_debut' => 'Date de début',
'evenement_date_du' => 'Du ',
'evenement_date_fin' => 'Date de fin',
- 'evenement_date_inscription' => 'Date d\'inscription',
+ 'evenement_date_inscription' => 'Date d’inscription',
'evenement_descriptif' => 'Descriptif',
'evenement_horaire' => 'Toute la journée',
'evenement_lieu' => 'Lieu',
+ 'evenement_participant_email_mention' => 'Pour rester en contact, vous pouvez indiquer votre adresse email. Elle ne sera pas communiquée sur le site.',
'evenement_repetitions' => 'Répétitions',
'evenement_titre' => 'Titre',
'evenements' => 'Événements',
'evenements_a_venir' => 'À venir',
'evenements_depuis_debut' => 'Depuis le début',
+ 'explication_synchro_flux_ical' => 'Le plugin Agenda fournit un flux des évènements au format iCal. Certains clients ne mettent à jour un évènement que si un numéro de version (indiquant ansi qu’il y a eu modification) est présent dans ce flux. Pour que ce numéro de version soit intégré dans le flux iCal généré, vous devez activer le suivi des révisions pour les évènements (menu Configuration > Révisions).',
+ 'explication_synchro_flux_ical_titre' => 'Synchronisation du flux iCal',
// F
'fermer' => 'fermer',
// I
'icone_creer_evenement' => 'Créer un nouvel événement',
- 'icone_modifier_evenement' => 'Modifier l\'événement',
+ 'icone_modifier_evenement' => 'Modifier l’événement',
'indiquez_votre_choix' => 'Indiquez votre choix',
'info_1_mois' => '1 mois',
'info_1_place' => '1 place',
'info_nb_inscrits' => '@nb@ inscrits',
'info_nb_mois' => '@nb@ mois',
'info_nb_places' => '@nb@ places',
+ 'info_nb_reponses' => '@nb@ réponses',
'info_nombre_evenements' => '@nb@ événements',
'info_nouvel_evenement' => 'Nouvel événement',
'info_reponse_inscription_non' => 'non',
- 'info_reponse_inscription_nsp' => '?',
+ 'info_reponse_inscription_nsp' => ' ?',
'info_reponse_inscription_oui' => 'oui',
'info_reponse_inscriptions' => 'Réponse',
'info_reponses_inscriptions' => 'Réponses :',
'info_un_evenement' => '1 événement',
'info_un_inscrit' => 'Un inscrit',
+ 'info_une_reponse' => 'Une réponse',
'inscrits' => 'Inscriptions',
// L
'label_inscription' => 'Inscription en ligne',
'label_periode_saison' => 'Saison',
'label_places' => 'Limiter le nombre de places',
- 'label_reponse_jyparticipe' => 'J\'y serai',
- 'label_reponse_jyparticipe_pas' => 'Je n\'y vais pas',
- 'label_reponse_jyparticipe_peutetre' => 'J\'y serai peut-être',
+ 'label_reponse_jyparticipe' => 'J’y serai',
+ 'label_reponse_jyparticipe_pas' => 'Je n’y serai pas',
+ 'label_reponse_jyparticipe_peutetre' => 'J’y serai peut-être',
'label_vous_inscrire' => 'Votre participation',
'lien_desinscrire' => 'Supprimer',
'lien_desinscrire_tous' => 'Supprimer toutes les inscriptions',
// R
'repetition' => 'Répétition',
'repetition_de' => 'Répétition de',
- 'retour_evenement' => 'Retour à l\'événement',
+ 'retour_evenement' => 'Retour à l’événement',
'rubrique_activer_agenda' => 'Activer le mode agenda',
- 'rubrique_dans_une_rubrique_mode_agenda' => 'Cette rubrique permet d\'utiliser les événements car elle est dans une rubrique dont le mode agenda a été activé',
+ 'rubrique_dans_une_rubrique_mode_agenda' => 'Cette rubrique permet d’utiliser les événements car elle est dans une rubrique dont le mode agenda a été activé',
'rubrique_desactiver_agenda' => 'Désactiver le mode agenda',
'rubrique_liste_evenements_de' => 'Événements de la rubrique',
'rubrique_mode_agenda' => 'Le mode agenda est activé pour cette rubrique et sa branche',
- 'rubrique_sans_gestion_evenement' => 'Le mode agenda n\'est pas activé pour cette rubrique',
+ 'rubrique_sans_gestion_evenement' => 'Le mode agenda n’est pas activé pour cette rubrique',
'rubriques' => 'Rubriques Agenda',
// S
'telecharger_toutes' => 'Toutes les réponses',
'telecharger_toutes_tous_evenements' => 'Toutes les réponses aux inscriptions',
'texte_agenda' => 'Agenda',
- 'texte_evenement_statut' => 'Cet événement est :',
- 'texte_logo_objet' => 'Logo de l\'événement',
+ 'texte_evenement_statut' => 'Cet événement est :',
+ 'texte_logo_objet' => 'Logo de l’événement',
'titre_cadre_ajouter_evenement' => 'Ajouter un événement',
'titre_cadre_modifier_evenement' => 'Modifier un événement',
- 'titre_sur_l_agenda' => 'Sur l\'agenda',
+ 'titre_sur_l_agenda' => 'Sur l’agenda',
'titre_sur_l_agenda_aussi' => 'Et aussi...',
'toutes_rubriques' => 'Toutes',
-<?php\r
-\r
-// Ceci est un fichier langue de SPIP -- This is a SPIP language file\r
-// Produit automatiquement par le plugin LangOnet a partir de la langue source nl\r
-// Module: agenda\r
-// Langue: nl\r
-// Date: 27-05-2011 12:08:10\r
-// Items: 35\r
-\r
-if (!defined('_ECRIRE_INC_VERSION')) return;\r
-\r
-$GLOBALS[$GLOBALS['idx_lang']] = array(\r
-\r
-// A\r
- 'activite_editoriale' => 'Hoofdactiviteit',\r
- 'ajouter_un_evenement' => 'een gebeurtenis toevoegen aan dit artikel',\r
-// B\r
- 'bouton_annuler' => 'Annuleren',\r
- 'bouton_supprimer' => 'Afschaffen',\r
-// E\r
- 'evenement_autres_occurences' => 'Andere omstandigheden:',\r
- 'evenement_date' => 'Date',\r
- 'evenement_date_a' => 'tot ',\r
- 'evenement_date_a_immediat' => 'om ',\r
- 'evenement_date_au' => 'Tot ',\r
- 'evenement_date_de' => 'Van ',\r
- 'evenement_date_debut' => 'Aanvangsdatum',\r
- 'evenement_date_du' => 'Van ',\r
- 'evenement_date_fin' => 'Einddatum',\r
- 'evenement_descriptif' => 'Beschrijvend',\r
- 'evenement_horaire' => 'Dienstregeling',\r
- 'evenement_lieu' => 'Plaats',\r
- 'evenement_repetitions' => 'Herhalingen',\r
- 'evenement_titre' => 'Titel',\r
- 'evenements' => 'Gebeurtenissen',\r
-// I\r
- 'icone_creer_evenement' => 'Een nieuwe gebeurtenis creëren',\r
- 'info_evenements' => 'Gebeurtenissen',\r
- 'info_nombre_evenements' => '@nb@ gebeurtenissen,',\r
- 'info_un_evenement' => 'een gebeurtenis,',\r
- 'item_mots_cles_association_evenements' => 'aan de gebeurtenissen',\r
-// L\r
- 'lien_retirer_evenement' => 'Afschaffen',\r
-// N\r
- 'nb_mots_clefs' => '@nb@ trefwoorden',\r
- 'nb_repetitions' => '@nb@ herhalingen',\r
-// R\r
- 'repetition_de' => 'Herhaling van',\r
-// S\r
- 'sans_titre' => '(zonder titel)',\r
-// T\r
- 'texte_agenda' => 'AGENDA',\r
- 'titre_cadre_ajouter_evenement' => 'Een gebeurtenis toevoegen',\r
- 'titre_cadre_modifier_evenement' => 'Een gebeurtenis wijzigen',\r
- 'titre_sur_l_agenda' => 'Op de agenda',\r
-// U\r
- 'un_mot_clef' => '1 trefwoord',\r
- 'une_repetition' => '1 herhaling',\r
-);\r
-?>
\ No newline at end of file
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/agenda?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'absence_prise_en_compte' => 'Je afwezigheid is genoteerd',
+ 'activite_editoriale' => 'Aanpassingen inhoud',
+ 'afficher_calendrier' => 'De kalender tonen',
+ 'agenda' => 'Agenda',
+ 'ajouter_repetition' => 'Herhalingen toevoegen',
+ 'ajouter_un_evenement' => 'een gebeurtenis aan dit artikel toevoegen',
+ 'annee_precedente' => 'vorig jaar',
+ 'annee_suivante' => 'volgend jaar',
+ 'aucun_evenement' => 'geen gebeurtenissen',
+ 'aucun_inscrit' => 'Geen inschrijvingen',
+ 'aucune_rubrique_mode_agenda' => 'Standaard kunnen aan elke rubriek gebeurtenissen worden toegevoegd.',
+
+ // B
+ 'bouton_annuler' => 'Annuleren',
+ 'bouton_supprimer' => 'Verwijderen',
+
+ // C
+ 'cal_par_jour' => 'dag',
+ 'cal_par_mois' => 'maand',
+ 'cal_par_semaine' => 'week',
+ 'confirm_suppression_inscription' => 'Wil je deze inschrijving werkelijk verwijderen?',
+ 'confirm_suppression_inscription_toutes' => 'Wil je werkelijk alle inschrijvingen verwijderen?',
+ 'connexion_necessaire_pour_inscription' => 'Je moet <a href=\'#LOGIN_PUBLIC\'>hier inloggen</a> om je te kunnen inschrijven.',
+ 'creer_evenement' => 'Een gebeurtenis maken',
+
+ // D
+ 'date_fmt_agenda_label' => '<b class="day">@jour@</b> <b class="month">@mois@</b> <b class="year">@annee@</b>',
+
+ // E
+ 'erreur_article_interdit' => 'Je mag deze gebeurtenis niet aan dit artikel koppelen',
+ 'erreur_article_manquant' => 'Je moet een artikel aangeven',
+ 'erreur_date' => 'Deze datum is onjuist',
+ 'erreur_date_avant_apres' => 'Kies een einddatum die na de begindatum ligt!',
+ 'erreur_date_corrigee' => 'De datum is aangepast',
+ 'erreur_heure' => 'Dit tijdstip is onjuist',
+ 'erreur_heure_corrigee' => 'Het tijdstip is aangepast',
+ 'evenement_adresse' => 'Adres',
+ 'evenement_article' => 'Gekoppeld aan artikel',
+ 'evenement_autres_occurences' => 'Andere tijdstippen:',
+ 'evenement_date' => 'Datum',
+ 'evenement_date_a' => '<br>tot ',
+ 'evenement_date_a_immediat' => 'om ',
+ 'evenement_date_au' => 'Tot ',
+ 'evenement_date_de' => 'Van ',
+ 'evenement_date_debut' => 'Begindatum',
+ 'evenement_date_du' => 'Van ',
+ 'evenement_date_fin' => 'Einddatum',
+ 'evenement_date_inscription' => 'Inschrijfdatum',
+ 'evenement_descriptif' => 'Omschrijving',
+ 'evenement_horaire' => 'De hele dag',
+ 'evenement_lieu' => 'Plaats',
+ 'evenement_participant_email_mention' => 'Om in contact te blijven moet je je emailadres vermelden. Deze zal niet op de site worden vermeld.',
+ 'evenement_repetitions' => 'Herhalingen',
+ 'evenement_titre' => 'Titel',
+ 'evenements' => 'Evenementen',
+ 'evenements_a_venir' => 'Toekomstig',
+ 'evenements_depuis_debut' => 'Alles',
+ 'explication_synchro_flux_ical' => 'Plugin Agenda levert een stroom evenementen in iCal formaat. Sommige clients passen een evenement alleen aan bij een gewijzigd versienummer. Om dit nummer in de iCal flux te integreren, moet je de revisie optie voor evenementen inschakelen (menu Configuratie > Revisies).',
+ 'explication_synchro_flux_ical_titre' => 'Synchronisatie van de iCal-flux',
+
+ // F
+ 'fermer' => 'sluiten',
+
+ // I
+ 'icone_creer_evenement' => 'Maak een nieuwe gebeurtenis',
+ 'icone_modifier_evenement' => 'Evenement aanpassen',
+ 'indiquez_votre_choix' => 'Maak een keuze',
+ 'info_1_mois' => '1 maand',
+ 'info_1_place' => '1 plaats',
+ 'info_aucun_evenement' => 'Geen enkel evenement',
+ 'info_evenement' => 'Evenement',
+ 'info_evenement_poubelle' => 'Verwijderd evenement',
+ 'info_evenement_propose' => 'Voorgesteld evenement',
+ 'info_evenement_publie' => 'Gepubliceerd evenement',
+ 'info_evenements' => 'Evenementen',
+ 'info_inscription' => 'Online inschrijving:',
+ 'info_lieu' => 'Plaats:',
+ 'info_nb_inscrits' => '@nb@ inschrijvingen',
+ 'info_nb_mois' => '@nb@ maanden',
+ 'info_nb_places' => '@nb@ plaatsen',
+ 'info_nb_reponses' => '@nb@ antwoorden',
+ 'info_nombre_evenements' => '@nb@ gebeurtenissen',
+ 'info_nouvel_evenement' => 'Nieuw evenement',
+ 'info_reponse_inscription_non' => 'nee',
+ 'info_reponse_inscription_nsp' => '?',
+ 'info_reponse_inscription_oui' => 'ja',
+ 'info_reponse_inscriptions' => 'Reactie',
+ 'info_reponses_inscriptions' => 'Reacties:',
+ 'info_un_evenement' => '1 gebeurtenis',
+ 'info_un_inscrit' => '1 inschrijving',
+ 'info_une_reponse' => 'Eén antwoord',
+ 'inscrits' => 'Inschrijvingen',
+
+ // L
+ 'label_annee' => 'Jaar',
+ 'label_inscription' => 'Online inschrijven',
+ 'label_periode_saison' => 'Seizoen',
+ 'label_places' => 'Aantal plaatsen beperken',
+ 'label_reponse_jyparticipe' => 'Ik kom zeker',
+ 'label_reponse_jyparticipe_pas' => 'Ik kom niet',
+ 'label_reponse_jyparticipe_peutetre' => 'Ik kom misschien',
+ 'label_vous_inscrire' => 'Je inschrijving',
+ 'lien_desinscrire' => 'Uitschrijven',
+ 'lien_desinscrire_tous' => 'Alle inschrijvingen verwijderen',
+ 'lien_retirer_evenement' => 'Verwijderen',
+ 'liste_inscrits' => 'Lijst van inschrijvingen',
+
+ // M
+ 'mois_precedent' => 'vorige maand',
+ 'mois_suivant' => 'volgende maand',
+
+ // N
+ 'nb_repetitions' => '@nb@ herhalingen',
+
+ // P
+ 'participation_incertaine_prise_en_compte' => 'Je eventuele deelname is geregistreerd',
+ 'participation_prise_en_compte' => 'Je deelname is geregistreerd',
+ 'probleme_technique' => 'Er is een technisch probleem. Probeer het later nog eens.',
+
+ // R
+ 'repetition' => 'Herhaling',
+ 'repetition_de' => 'Herhaling van',
+ 'retour_evenement' => 'Terug naar het evenement',
+ 'rubrique_activer_agenda' => 'Activeer de agenda voor deze rubriek',
+ 'rubrique_dans_une_rubrique_mode_agenda' => 'In deze rubriek kunnen gebeurtenissen worden gebruikt, want de agenda-functionaliteit is voor de hoofdrubriek geactiveerd',
+ 'rubrique_desactiver_agenda' => 'Desactiveer de agenda voor deze rubriek',
+ 'rubrique_liste_evenements_de' => 'Evenementen van de rubriek',
+ 'rubrique_mode_agenda' => 'De agenda is voor deze rubriek en subrubrieken geactiveerd',
+ 'rubrique_sans_gestion_evenement' => 'In deze rubriek kunnen geen gebeurtenissen worden gebruikt',
+ 'rubriques' => 'Agenda Rubrieken',
+
+ // S
+ 'sans_titre' => '(geen titel)',
+
+ // T
+ 'telecharger' => 'Downloaden (csv)',
+ 'telecharger_oui' => 'Alleen positieve reacties',
+ 'telecharger_toutes' => 'Alle reacties',
+ 'telecharger_toutes_tous_evenements' => 'Alle reacties op alle evenementen',
+ 'texte_agenda' => 'AGENDA',
+ 'texte_evenement_statut' => 'Dit evenement is:',
+ 'texte_logo_objet' => 'Logo van het evenement',
+ 'titre_cadre_ajouter_evenement' => 'Een gebeurtenis toevoegen',
+ 'titre_cadre_modifier_evenement' => 'Een gebeurtenis aanpassen',
+ 'titre_sur_l_agenda' => 'Binnenkort...',
+ 'titre_sur_l_agenda_aussi' => 'En ook...',
+ 'toutes_rubriques' => 'Alles',
+
+ // U
+ 'une_repetition' => '1 herhaling',
+
+ // V
+ 'voir_evenements_rubrique' => 'Bekijk de gebeurtenissen van de rubriek'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/agenda?lang_cible=ru
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'absence_prise_en_compte' => 'Записано, что вас не будет',
+ 'activite_editoriale' => 'Редакционная активность',
+ 'afficher_calendrier' => 'Показать календарь',
+ 'agenda' => 'Расписание',
+ 'ajouter_repetition' => 'Добавить репетиции',
+ 'ajouter_un_evenement' => 'добавить событие к этой статье',
+ 'annee_precedente' => 'предыдущий год',
+ 'annee_suivante' => 'следующий год',
+ 'aucun_evenement' => 'нет событий',
+ 'aucun_inscrit' => 'Нет зарегистированных',
+ 'aucune_rubrique_mode_agenda' => 'По умолчанию можно использовать события во всех рубриках. Если вы установите режим расписания в одной (или нескольких) рубриках, управление событиями ограничиться только её (или их) подрубриками.',
+
+ // B
+ 'bouton_annuler' => 'Отменить',
+ 'bouton_supprimer' => 'Удалить',
+
+ // C
+ 'cal_par_jour' => 'день',
+ 'cal_par_mois' => 'месяц',
+ 'cal_par_semaine' => 'неделя',
+ 'confirm_suppression_inscription' => 'Вы действительно хотите удалить эту регистрацию?',
+ 'confirm_suppression_inscription_toutes' => 'Вы действительно хотите удалить все регистрации?',
+ 'connexion_necessaire_pour_inscription' => 'Войдите, пожалуйста, прежде чем зарегистрироваться на это мероприятии.',
+ 'creer_evenement' => 'Создать событие',
+
+ // D
+ 'date_fmt_agenda_label' => '<b class="day">@jour@</b> <b class="month">@mois@</b> <b class="year">@annee@</b>',
+
+ // E
+ 'erreur_article_interdit' => 'У вас нет прав присоединить это событие к этой статье',
+ 'erreur_article_manquant' => 'Вы должны указать статью',
+ 'erreur_date' => 'Дата неверна',
+ 'erreur_date_avant_apres' => 'Укажите дату окончания после даты начала!',
+ 'erreur_date_corrigee' => 'Дата изменена',
+ 'erreur_heure' => 'Время неправильное',
+ 'erreur_heure_corrigee' => 'Время изменено',
+ 'evenement_adresse' => 'Адрес',
+ 'evenement_article' => 'Связь со статьей',
+ 'evenement_autres_occurences' => 'Другие случаи:',
+ 'evenement_date' => 'Дата',
+ 'evenement_date_a' => 'до ',
+ 'evenement_date_a_immediat' => 'для ',
+ 'evenement_date_au' => 'До ',
+ 'evenement_date_de' => 'От',
+ 'evenement_date_debut' => 'Дата начала',
+ 'evenement_date_du' => 'От',
+ 'evenement_date_fin' => 'Дата окончания',
+ 'evenement_date_inscription' => 'Дата регистрации',
+ 'evenement_descriptif' => 'Описание',
+ 'evenement_horaire' => 'Все дни',
+ 'evenement_lieu' => 'Место',
+ 'evenement_participant_email_mention' => 'Чтобы оставаться на связи, просто введите свой адрес электронной почты. Он не будет указан на сайте.',
+ 'evenement_repetitions' => 'Репетиции',
+ 'evenement_titre' => 'Заголовок',
+ 'evenements' => 'События',
+ 'evenements_a_venir' => 'Следующее',
+ 'evenements_depuis_debut' => 'С начала',
+ 'explication_synchro_flux_ical' => 'Плагин расписания поддерживает поток событий в формате iCal. Некоторые клиенты не обновляют события, если номер версии (или указание других модификаций) отсутствует в этом потоке. Чтобы получить этот номер версии, встроенный в генерируемый iCal поток, необходимо активировать слежение за событиями (меню Конфигурация> Изменения).',
+ 'explication_synchro_flux_ical_titre' => 'Синхронизация потока iCal',
+
+ // F
+ 'fermer' => 'закрыто',
+
+ // I
+ 'icone_creer_evenement' => 'Создать новое событие',
+ 'icone_modifier_evenement' => 'Редактировать событие',
+ 'indiquez_votre_choix' => 'Укажите свой выбор',
+ 'info_1_mois' => '1 месяц',
+ 'info_1_place' => '1 место',
+ 'info_aucun_evenement' => 'Нет событий',
+ 'info_evenement' => 'Событие',
+ 'info_evenement_poubelle' => 'Событие удалено',
+ 'info_evenement_propose' => 'Событие предложено',
+ 'info_evenement_publie' => 'Событие опубликовано',
+ 'info_evenements' => 'События',
+ 'info_inscription' => 'Он-лайн регистрация:',
+ 'info_lieu' => 'Место:',
+ 'info_nb_inscrits' => '@nb@ зарегистрировались',
+ 'info_nb_mois' => '@nb@ месяцев',
+ 'info_nb_places' => '@nb@ мест',
+ 'info_nb_reponses' => '@nb@ ответов',
+ 'info_nombre_evenements' => '@nb@ событий',
+ 'info_nouvel_evenement' => 'Новое событие',
+ 'info_reponse_inscription_non' => 'нет',
+ 'info_reponse_inscription_nsp' => ' ?',
+ 'info_reponse_inscription_oui' => 'да',
+ 'info_reponse_inscriptions' => 'Ответ',
+ 'info_reponses_inscriptions' => 'Ответы:',
+ 'info_un_evenement' => 'Одно событие',
+ 'info_un_inscrit' => 'Один зарегистрировавшийся',
+ 'info_une_reponse' => 'Один ответ',
+ 'inscrits' => 'Регистрации',
+
+ // L
+ 'label_annee' => 'Год',
+ 'label_inscription' => 'Он-лайн регистрация',
+ 'label_periode_saison' => 'Сезон',
+ 'label_places' => 'Лимит мест',
+ 'label_reponse_jyparticipe' => 'Я буду',
+ 'label_reponse_jyparticipe_pas' => 'Меня не будет',
+ 'label_reponse_jyparticipe_peutetre' => 'Возможно я буду',
+ 'label_vous_inscrire' => 'Ваше участие',
+ 'lien_desinscrire' => 'Удалить',
+ 'lien_desinscrire_tous' => 'Удалить все регистрации',
+ 'lien_retirer_evenement' => 'Удалено',
+ 'liste_inscrits' => 'Список регистраций',
+
+ // M
+ 'mois_precedent' => 'предыдущий месяц',
+ 'mois_suivant' => 'следующий месяц',
+
+ // N
+ 'nb_repetitions' => '@nb@ репетиций',
+
+ // P
+ 'participation_incertaine_prise_en_compte' => 'Ваше возможное участие записано',
+ 'participation_prise_en_compte' => 'Ваше участие записано',
+ 'probleme_technique' => 'Произошла техническая проблема. Попробуйте еще раз позже.',
+
+ // R
+ 'repetition' => 'Репетиция',
+ 'repetition_de' => 'Репетиция ',
+ 'retour_evenement' => 'Вернуться к событию',
+ 'rubrique_activer_agenda' => 'Активировать режим расписания',
+ 'rubrique_dans_une_rubrique_mode_agenda' => 'В этой рубрике можно использовать события, так как она находится в разделе, для которого включено расписание',
+ 'rubrique_desactiver_agenda' => 'Отключить режим расписания для этой рубрики',
+ 'rubrique_liste_evenements_de' => 'События в этой рубрике',
+ 'rubrique_mode_agenda' => 'Режим расписания доступен для этой рубрики и её подрубрик',
+ 'rubrique_sans_gestion_evenement' => 'Режим расписания недоступен для этой рубрики',
+ 'rubriques' => 'Рубрики Расписания',
+
+ // S
+ 'sans_titre' => '(без заголовка)',
+
+ // T
+ 'telecharger' => 'Загрузить (csv)',
+ 'telecharger_oui' => 'Только положительные ответы',
+ 'telecharger_toutes' => 'Все ответы',
+ 'telecharger_toutes_tous_evenements' => 'Все ответы на записи',
+ 'texte_agenda' => 'Расписание',
+ 'texte_evenement_statut' => 'Это событие:',
+ 'texte_logo_objet' => 'Логотип события',
+ 'titre_cadre_ajouter_evenement' => 'Добавить событие',
+ 'titre_cadre_modifier_evenement' => 'Изменить событие',
+ 'titre_sur_l_agenda' => 'В расписании',
+ 'titre_sur_l_agenda_aussi' => 'А также...',
+ 'toutes_rubriques' => 'Все',
+
+ // U
+ 'une_repetition' => '1 репетиция',
+
+ // V
+ 'voir_evenements_rubrique' => 'Просмотреть события этой рубрики'
+);
+
+?>
'bouton_supprimer' => 'Odstrániť',
// C
+ 'cal_par_jour' => 'deň',
+ 'cal_par_mois' => 'mesiac',
+ 'cal_par_semaine' => 'týždeň',
'confirm_suppression_inscription' => 'Chcete odstrániť tento údaj?',
'confirm_suppression_inscription_toutes' => 'Naozaj chcete vymazať všetky prihlásenia?',
'connexion_necessaire_pour_inscription' => 'Ďakujeme vám, že sa prihlásite predtým, ako sa zaregistrujete na túto udalosť.',
'creer_evenement' => 'Vytvoriť udalosť',
+ // D
+ 'date_fmt_agenda_label' => '<b class="day">@jour@</b> <b class="month">@mois@</b> <b class="year">@annee@</b>',
+
// E
'erreur_article_interdit' => 'Nemáte dostatočné práva na to, aby ste mohli priradiť túto udalosť k tomuto článku',
'erreur_article_manquant' => 'Musíte uviesť článok',
'evenement_date_du' => 'Od ',
'evenement_date_fin' => 'Dátum ukončenia',
'evenement_date_inscription' => 'Dátum prihlásenia',
- 'evenement_descriptif' => 'Popis',
+ 'evenement_descriptif' => 'Opis',
'evenement_horaire' => 'Celý deň',
'evenement_lieu' => 'Miesto',
+ 'evenement_participant_email_mention' => 'Ak chcete mať prehľad o tom, čo sa deje, zadajte svoju e-mailovú adresu. Nebude zverejnená na stránke.',
'evenement_repetitions' => 'Opakovania',
- 'evenement_titre' => 'Nadpis',
+ 'evenement_titre' => 'Titulok',
'evenements' => 'Udalosti',
'evenements_a_venir' => 'Budúce',
'evenements_depuis_debut' => 'od začiatku',
+ 'explication_synchro_flux_ical' => 'Zásuvný modul Kalendár udalostí poskytuje výpis zoznamu udalostí vo formáte iCal. Niektoré programy aktualizujú udalosti, iba ak je pri nich uvedené číslo verzie (a to, že nastala zmena). Na to, aby bolo toto číslo verzie zavedené do vygenerovaného zdroja iCal, treba aktivovať sledovanie zmien pre udalosti (menu Konfigurácia > Zmeny).',
+ 'explication_synchro_flux_ical_titre' => 'Synchronizácia zdroja iCal',
// F
'fermer' => 'zatvoriť',
'info_nb_inscrits' => '@nb@ prihlásení',
'info_nb_mois' => '@nb@ mesiac',
'info_nb_places' => '@nb@ miest',
+ 'info_nb_reponses' => '@nb@ odpovedí',
'info_nombre_evenements' => '@nb@ udalostí',
'info_nouvel_evenement' => 'Nová udalosť',
'info_reponse_inscription_non' => 'nie',
'info_reponses_inscriptions' => 'Reakcie:',
'info_un_evenement' => '1 udalosť',
'info_un_inscrit' => 'Jedno prihlásenie',
+ 'info_une_reponse' => 'Jedna odpoveď',
'inscrits' => 'Registrácie',
// L
'label_periode_saison' => 'Ročné obdobie',
'label_places' => 'Obmedziť počet miest',
'label_reponse_jyparticipe' => 'Budem tam',
- 'label_reponse_jyparticipe_pas' => 'Neprídem',
+ 'label_reponse_jyparticipe_pas' => 'Nebudem tam',
'label_reponse_jyparticipe_peutetre' => 'Možno prídem',
'label_vous_inscrire' => 'Vaša účasť',
'lien_desinscrire' => 'Odstrániť',
'rubriques' => 'Rubriky s kalendárom udalostí',
// S
- 'sans_titre' => '(bez nadpisu)',
+ 'sans_titre' => '(bez titulku)',
// T
'telecharger' => 'Stiahnuť (csv)',
--- /dev/null
+<traduction module="configureragenda" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/agenda/trunk/lang/" reference="fr">
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/configureragenda?lang_cible=fr" total="18" traduits="18" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/configureragenda?lang_cible=nl" total="18" traduits="18" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+</traduction>
$GLOBALS[$GLOBALS['idx_lang']] = array(
-
- 'titre_configuration' => 'Affichage de l\'Agenda',
- 'label_titre' => 'Titre de la page',
- 'label_descriptif' => 'Descriptif',
- 'label_insert_head_css_1' => 'Insérer automatiquement les styles par défaut de l\'agenda',
- 'label_url_evenement' => 'Affichage d\'un événement',
- 'label_url_evenement_article' => 'sur la page de l\'article associé',
- 'label_url_evenement_evenement' => 'sur une page dédiée pour chaque événement',
- 'label_affichage_duree' => 'Lister les événements sur',
+ // L
'label_affichage_debut' => 'Début de la liste',
'label_affichage_debut_date_jour' => 'Date du jour',
'label_affichage_debut_date_veille' => 'Date de la veille',
- 'label_affichage_debut_debut_semaine' => 'Début de la semaine',
- 'label_affichage_debut_debut_semaine_prec' => 'Début de la semaine précédente',
'label_affichage_debut_debut_mois' => 'Début du mois',
+ 'label_affichage_debut_debut_mois_1' => 'Début d’année',
'label_affichage_debut_debut_mois_prec' => 'Début du mois précédent',
- 'label_affichage_debut_debut_mois_1' => 'Début d\'année',
+ 'label_affichage_debut_debut_semaine' => 'Début de la semaine',
+ 'label_affichage_debut_debut_semaine_prec' => 'Début de la semaine précédente',
'label_affichage_debut_mois_passe' => '@mois@ précédent',
+ 'label_affichage_duree' => 'Lister les événements sur',
+ 'label_descriptif' => 'Descriptif',
+ 'label_insert_head_css_1' => 'Insérer automatiquement les styles par défaut de l’agenda',
+ 'label_titre' => 'Titre de la page',
+ 'label_url_evenement' => 'Affichage d’un événement',
+ 'label_url_evenement_article' => 'sur la page de l’article associé',
+ 'label_url_evenement_evenement' => 'sur une page dédiée pour chaque événement',
+ 'legend_presentation_agenda' => 'Présentation de l’agenda',
- 'legend_presentation_agenda' => 'Présentation de l\'agenda',
+ // T
+ 'titre_configuration' => 'Affichage de l’Agenda'
);
?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/configureragenda?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // L
+ 'label_affichage_debut' => 'Begin van de lijst',
+ 'label_affichage_debut_date_jour' => 'Huidige datum',
+ 'label_affichage_debut_date_veille' => 'Voorafgaande datum',
+ 'label_affichage_debut_debut_mois' => 'Begin van de maand',
+ 'label_affichage_debut_debut_mois_1' => 'Begin van het jaar',
+ 'label_affichage_debut_debut_mois_prec' => 'Begin van de voorafgaande maand',
+ 'label_affichage_debut_debut_semaine' => 'Begin van de week',
+ 'label_affichage_debut_debut_semaine_prec' => 'Begin van de voorafgaande week',
+ 'label_affichage_debut_mois_passe' => '@mois@ vooraf',
+ 'label_affichage_duree' => 'De evenementen opsommen op',
+ 'label_descriptif' => 'Omschrijving',
+ 'label_insert_head_css_1' => 'Automatisch de standaardstijlen van de agenda invoegen',
+ 'label_titre' => 'Paginatitel',
+ 'label_url_evenement' => 'Weergave van een evenement',
+ 'label_url_evenement_article' => 'op de pagina van het bijbehorende artikel',
+ 'label_url_evenement_evenement' => 'op een eigen pagina voor ieder evenement',
+ 'legend_presentation_agenda' => 'Presentatie van de agenda',
+
+ // T
+ 'titre_configuration' => 'Weergave van de Agenda'
+);
+
+?>
--- /dev/null
+<traduction module="migreragenda" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/agenda/trunk/lang/" reference="fr">
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/migreragenda?lang_cible=fr" total="19" traduits="19" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+</traduction>
$GLOBALS[$GLOBALS['idx_lang']] = array(
- 'titre_migrer_agenda' => 'Migrer un Agenda d\'articles',
+ // B
+ 'bouton_lancer_migration' => 'Lancer la migration',
+ 'bouton_migrer' => 'Prévisualiser la migration',
+
+ // E
+ 'erreur_choix_incorrect' => 'Ce choix n’est pas permis',
'explication_migration_agenda_article_1' => 'Si votre site contient un agenda basé sur des articles,
vous pouvez utiliser cet outil pour le transformer automatiquement en événements.',
'explication_migration_agenda_article_2' => 'Dans la rubrique agenda sélectionnée, un événement sera créé et renseigné pour dater chaque article, selon les réglages ci-dessous.',
- 'explication_migration_agenda_article_fin' => 'Seuls les articles publiés et n\'ayant pas déjà d\'événement seront migrés.
- Aucune donnée ne sera supprimée sur les articles : si le résultat ne vous convient pas, il suffit de désinstaller le plugin Agenda pour retrouver votre rubrique comme avant la migration.',
+ 'explication_migration_agenda_article_fin' => 'Seuls les articles publiés et n’ayant pas déjà d’événement seront migrés.
+ Aucune donnée ne sera supprimée sur les articles : si le résultat ne vous convient pas, il suffit de désinstaller le plugin Agenda pour retrouver votre rubrique comme avant la migration.',
- 'label_rubrique_source' => 'Rubrique Agenda à migrer',
- 'label_toute_la_branche_oui' => 'Migrer aussi toutes les sous-rubriques',
+ // I
+ 'info_migration_articles' => 'Articles à migrer :',
+ 'info_migration_articles_reussi' => 'Articles migrés :',
+
+ // L
+ 'label_champ_date' => 'Date de publication',
'label_champ_date_debut' => 'Date de début',
'label_champ_date_fin' => 'Date de fin',
- 'label_champ_date' => 'Date de publication',
'label_champ_date_redac' => 'Date de rédaction antérieure',
- 'label_horaire' => 'Horaire',
- 'label_horaire_oui' => 'Prendre en compte l\'heure',
- 'label_horaire_non' => 'Pas d\'horaire (événements par journées)',
'label_groupes_mots' => 'Associer les mots des groupes suivants',
- 'bouton_migrer' => 'Prévisualiser la migration',
- 'bouton_lancer_migration' => 'Lancer la migration',
-
- 'erreur_choix_incorrect' => 'Ce choix n\'est pas permis',
-
- 'info_migration_articles' => "Articles à migrer :",
- 'info_migration_articles_reussi' => "Articles migrés :",
+ 'label_horaire' => 'Horaire',
+ 'label_horaire_non' => 'Pas d’horaire (événements par journées)',
+ 'label_horaire_oui' => 'Prendre en compte l’heure',
+ 'label_rubrique_source' => 'Rubrique Agenda à migrer',
+ 'label_toute_la_branche_oui' => 'Migrer aussi toutes les sous-rubriques',
+ // T
+ 'titre_migrer_agenda' => 'Migrer un Agenda d’articles'
);
?>
<traduction module="paquet-agenda" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/agenda/trunk/lang/" reference="fr">
- <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=en">
+ <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=en" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
</langue>
- <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=es">
- <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+ <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=es" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
</langue>
- <langue code="fr" />
- <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=sk">
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=fr" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=nl" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+ <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=ru" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="olly" lien="http://trad.spip.net/auteur/olly" />
+ </langue>
+ <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=sk" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
</langue>
</traduction>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'agenda_description' => 'Evenementenagenda',
+ 'agenda_nom' => 'Agenda',
+ 'agenda_slogan' => 'Evenementenagenda'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-agenda?lang_cible=ru
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'agenda_description' => 'События в расписании',
+ 'agenda_nom' => 'Расписание (Порядок дня)',
+ 'agenda_slogan' => 'События в расписании'
+);
+
+?>
<paquet
prefix="agenda"
categorie="date"
- version="3.11.8"
+ version="3.14.12"
etat="stable"
- compatibilite="[3.0.0;3.0.*]"
+ compatibilite="[3.0.0;3.1.*]"
logo="prive/themes/spip/images/evenement-32.png"
- schema="0.25.0"
- documentation="http://www.spip-contrib.net/article2858"
+ schema="0.27.0"
+ documentation="http://contrib.spip.net/article2858"
>
<nom>Agenda</nom>
<!-- Agenda Evenementiel -->
<auteur lien="http://www.yterium.net">Cedric MORIN</auteur>
- <auteur lien="http://www.spip-contrib.net/b_b">b_b</auteur>
- <auteur lien="http://romy.tetue.net">romy.tetue.net</auteur>
+ <auteur lien="http://contrib.spip.net/b_b">b_b</auteur>
+ <auteur lien="http://spip.tetue.net">Tetue</auteur>
<auteur lien="http://www.cahri.com">Julien Tessier</auteur>
- <copyright>2006-2012</copyright>
+ <copyright>2006-2015</copyright>
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
<traduire module="agenda" reference="fr" gestionnaire="salvatore" />
- <traduire module="paquet-agenda" reference="fr" gestionnaire="salvatore" />
+ <traduire module="configureragenda" reference="fr" gestionnaire="salvatore" />
+ <traduire module="migreragenda" reference="fr" gestionnaire="salvatore" />
<pipeline nom="autoriser" inclure="agenda_autoriser.php" />
<pipeline nom="declarer_tables_interfaces" inclure="base/agenda_evenements.php" />
<pipeline nom="post_edition" inclure="agenda_pipelines.php" />
<pipeline nom="post_edition_lien" inclure="agenda_pipelines.php" />
<pipeline nom="quete_calendrier_prive" inclure="agenda_pipelines.php" />
+ <pipeline nom="revisions_chercher_label" inclure="agenda_pipelines.php" />
- <utilise nom="Fulltext" compatibilite="[0.2;[" />
- <utilise nom="mots" compatibilite="[2.0.0;[" />
- <necessite nom="calendriermini" compatibilite="[2.0.0;[" />
+ <utilise nom="Fulltext" compatibilite="[1.0.0;[" />
+ <utilise nom="mots" compatibilite="[2.4.6;[" />
+ <necessite nom="calendriermini" compatibilite="[2.3.7;[" />
<menu nom="evenements" titre="agenda:evenements" parent="menu_edition" icone="images/evenement-16.png" />
<menu nom="evenement_creer" titre="agenda:creer_evenement" parent="outils_rapides" action="evenement_edit" icone="images/evenement-new-16.png" />
-[(#REM) afficher les evenements de cet article]
-<div id="agenda">
-<INCLURE{fond=prive/objets/liste/evenements-post,nb=5,sinon=<:agenda:info_aucun_evenement:>,statut=#LISTE{publie,prop},env}>
+#SET{sinon,''}
[(#AUTORISER{creerevenementdans, article, #ID_ARTICLE}|oui)
- [(#URL_ECRIRE{evenement_edit,id_evenement=new}|parametre_url{id_article,#ID_ARTICLE}|parametre_url{redirect,#SELF}|icone_horizontale{<:agenda:creer_evenement:>,evenement-24.png,new,creer_evenement})]
+ [(#SET{sinon,<:agenda:info_aucun_evenement:>})]
]
+
+[(#REM) afficher les evenements de cet article]
+<div id="agenda">
+ <INCLURE{fond=prive/objets/liste/evenements-post,nb=5,sinon=#GET{sinon},statut=#LISTE{publie,prop},env}>
+ [(#AUTORISER{creerevenementdans, article, #ID_ARTICLE}|oui)
+ [(#URL_ECRIRE{evenement_edit,id_evenement=new}|parametre_url{id_article,#ID_ARTICLE}|parametre_url{redirect,#SELF}|icone_horizontale{<:agenda:creer_evenement:>,evenement-24.png,new,creer_evenement})]
+ ]
</div>
<B_repetitions>
<div class="champ contenu_repetitions">
<div class='label'>[(#GRAND_TOTAL|singulier_ou_pluriel{agenda:une_repetition,agenda:nb_repetitions})]</div>
- <div dir='#LANG_DIR' class='repetitions'>(<BOUCLE_repetitions(EVENEMENTS){par date_debut}{id_evenement_source=#ID_EVENEMENT}{', '}{statut==.*}>[(#DATE_DEBUT|affdate_court)]</BOUCLE_repetitions>)</div>
+ <div dir='#LANG_DIR' class='repetitions'>(<BOUCLE_repetitions(EVENEMENTS){par date_debut}{id_evenement_source=#ID_EVENEMENT}{', '}{statut==.*}>[<a href="[(#ID_EVENEMENT|generer_url_entite{evenement})]">(#DATE_DEBUT|affdate_court)</a>]</BOUCLE_repetitions>)</div>
</div>
</B_repetitions>
<div class="champ contenu_descriptif[ (#DESCRIPTIF*|strlen|?{'',vide})]">
</tr>
</thead>
<tbody>
- <BOUCLE_inscrits(AUTEURS evenements_participants){id_evenement}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,15}}>
+ <BOUCLE_inscrits(evenements_participants){id_evenement}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,15}}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
<td class='statut'>[(#STATUT|puce_statut{auteur,#ID_AUTEUR})]</td>
- <td class='nom'><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[(#RANG). ][(#NOM|sinon{<:texte_vide:>})]</a></td>
- <td class='mail'>#EMAIL</td>
- <td class='date'>[(#DATE|affdate_jourcourt|unique{liste_evt})]</td>
+ <td class='nom'>
+ [(#NOM|sinon{
+ <a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">[(#RANG). ][(#INFO_NOM{auteur,#ID_AUTEUR}|sinon{<:texte_vide:>})]</a>
+ })]
+ </td>
+ <td class='mail'>[(#EMAIL|sinon{#INFO_EMAIL{auteur,#ID_AUTEUR}})]</td>
+ <td class='date'>[(#DATE|affdate_jourcourt)]</td>
<td class='reponse'>#REPONSE</td>[
(#AUTORISER{modifier,evenement,#ID_EVENEMENT})<td class='delete'>
- <button class="button link delete" name="supprimer_lien[evenement-#ID_EVENEMENT-auteur-#ID_AUTEUR]" value="X" onclick="return (confirm('<:agenda:confirm_suppression_inscription:>'));"><:agenda:lien_desinscrire:> [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'X'})]</button>
- </td>]
+ [(#BOUTON_ACTION{<:agenda:lien_desinscrire:>, [(#URL_ACTION_AUTEUR{supprimer_evenement_participant,#ID_EVENEMENT-#ID_EVENEMENT_PARTICIPANT,#SELF})], ajax, <:agenda:confirm_suppression_inscription:>})]
+ </td>]
</tr>
</BOUCLE_inscrits>
</tbody>
</table>
[<p class='pagination'>(#PAGINATION{prive})</p>]
</div>
-[(#AUTORISER{modifier,evenement,#ID_EVENEMENT})<p><button class="button link delete" name="supprimer_lien[evenement-#ID_EVENEMENT-auteur-*]" value="X" onclick="return (confirm('<:agenda:confirm_suppression_inscription_toutes:>'));"><:agenda:lien_desinscrire_tous:> [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'X'})]</button></p>]
+[(#AUTORISER{modifier,evenement,#ID_EVENEMENT})
+ [(#BOUTON_ACTION{<:agenda:lien_desinscrire_tous:>, [(#URL_ACTION_AUTEUR{supprimer_evenement_participant,#ID_EVENEMENT-tous,#SELF})], ajax, <:agenda:confirm_suppression_inscription_toutes:>})]
+]
</B_inscrits>
<h2><:agenda:aucun_inscrit:></h2>
<//B_inscrits>
+
<td class='statut'>[(#STATUT|puce_statut{evenement,#ID_EVENEMENT})]</td>
<td class='date'>[(#DATE_DEBUT|affdate_jourcourt|unique{liste_evt})]</td>
<td class='article secondaire'>[<a (#ID_ARTICLE|oui) href="[(#ID_ARTICLE|generer_url_entite{article})]" title="[(#INFO_TITRE{article,#ID_ARTICLE}|attribut_html)]">[(#CHEMIN_IMAGE{article-16.png}|balise_img{#INFO_TITRE{article,#ID_ARTICLE}})]</a>]</td>
- <td class='titre principale'><a href="[(#ID_EVENEMENT_SOURCE|?{#ID_EVENEMENT_SOURCE,#ID_EVENEMENT}|generer_url_entite{evenement})]"
- title="<:info_numero_abbreviation|attribut_html:> #ID_EVENEMENT">[(#RANG). ]#TITRE</a>
+ <td class='titre principale'><a href="[(#ID_EVENEMENT_SOURCE|?{#ID_EVENEMENT_SOURCE,#ID_EVENEMENT}|generer_url_entite{evenement})]" title="<:info_numero_abbreviation|attribut_html:> #ID_EVENEMENT">[(#RANG). ]#TITRE</a>
<p class="date">[(#DATE_DEBUT|affdate_debut_fin{#DATE_FIN,#HORAIRE})]</p>
</td>
<td class='lieu secondaire'>#LIEU</td>
<div dir='#LANG_DIR' class='dates'>[(#DATE_DEBUT|affdate_debut_fin{#DATE_FIN,#HORAIRE})]</div>
[<div class='descriptif secondaire #EDIT{descriptif}'><:agenda:evenement_descriptif:> : (#DESCRIPTIF|PtoBR)</div>]
[<div class='lieu secondaire #EDIT{lieu}'><:agenda:evenement_lieu:> : (#LIEU)</div>]
-<div class="ajax">
- #FORMULAIRE_EVENEMENT_PARTICIPANTS{#ENV{id_evenement},#ENV{tri_inscrits}}
-</div>
-
+<INCLURE{fond=prive/objets/liste/evenement_participants,id_evenement=#ENV{id_evenement},tri_inscrits=#ENV{tri_inscrits}}>
</BOUCLE_evt>
</B_evt>
<h2><:agenda:aucun_evenement:></h2>
<//B_evt>
#BOITE_FERMER
+
[(#AUTORISER{configurer_agenda}|sinon_interdire_acces)]
<h1 class="grostitre"><:agenda:agenda:></h1>
+[(#BOITE_OUVRIR{[(#VAL{agenda:explication_synchro_flux_ical_titre}|_T)],'info'})]
+<:agenda:explication_synchro_flux_ical:>
+#BOITE_FERMER
<div class="ajax">#FORMULAIRE_CONFIGURER_AGENDA</div>
<div class="ajax">#FORMULAIRE_CONFIGURER_CALENDRIERMINI</div>
<h2><:agenda:rubriques:></h2>
<BOUCLE0(AUTEURS){tout}{id_auteur=#ENV{id}}{lang_select}><?php
if ([(#ID_AUTEUR|securiser_acces{#ENV{cle},transmettre,#ENV{op}, #ENV{args}}|?{1,0})]) {
?><B_participants_oui>"<:nom:>","<:email:>","<:agenda:evenement_date_inscription:>"
-<BOUCLE_participants_oui(AUTEURS evenements_participants){id_evenement}{si #ENV{reponse}}{reponse=#ENV{reponse}}>"[(#NOM|sinon{<:texte_vide:>})]","#EMAIL","[(#DATE|affdate{'d/m/Y H:i:s'})]"
+<BOUCLE_participants_oui(evenements_participants){id_evenement}{si #ENV{reponse}}{reponse=#ENV{reponse}}>"[(#NOM|sinon{#INFO_NOM{auteur,#ID_AUTEUR}})]","[(#EMAIL|sinon{#INFO_EMAIL{auteur,#ID_AUTEUR}})]","[(#DATE|affdate{'d/m/Y H:i:s'})]"
</BOUCLE_participants_oui>
</B_participants_oui>
<B_participants>"<:nom:>","<:email:>","<:agenda:evenement_date_inscription:>","<:agenda:reponse:>"
-<BOUCLE_participants(AUTEURS evenements_participants){id_evenement}>"[(#NOM|sinon{<:texte_vide:>})]","#EMAIL","[(#DATE|affdate{'d/m/Y H:i:s'})]","#REPONSE"
+<BOUCLE_participants(evenements_participants){id_evenement}>"[(#NOM|sinon{#INFO_NOM{auteur,#ID_AUTEUR}})]","[(#EMAIL|sinon{#INFO_EMAIL{auteur,#ID_AUTEUR}})]","[(#DATE|affdate{'d/m/Y H:i:s'})]","#REPONSE"
</BOUCLE_participants>
<//B_participants_oui>
<?php
} else {
include_spip('inc/minipres');
echo minipres();
-}?></BOUCLE0>
\ No newline at end of file
+}?></BOUCLE0>
+
\ No newline at end of file
<BOUCLE0(AUTEURS){tout}{id_auteur=#ENV{id}}{lang_select}><?php
if ([(#ID_AUTEUR|securiser_acces{#ENV{cle},transmettre,#ENV{op}, #ENV{args}}|?{1,0})]) {
?>"<:numero:>","<:agenda:evenement:>","<:nom:>","<:email:>","<:agenda:evenement_date_inscription:>","<:agenda:reponse:>"
-<BOUCLE_evt(EVENEMENTS){par id_evenement}><BOUCLE_participants(AUTEURS evenements_participants){id_evenement}>"#ID_EVENEMENT","#INFO_TITRE{evenement,#ID_EVENEMENT}","[(#NOM|sinon{<:texte_vide:>})]","#EMAIL","[(#DATE|affdate{'d/m/Y H:i:s'})]","#REPONSE"
+<BOUCLE_evt(EVENEMENTS){par id_evenement}><BOUCLE_participants(evenements_participants){id_evenement}>"#ID_EVENEMENT","#INFO_TITRE{evenement,#ID_EVENEMENT}","[(#NOM|sinon{#INFO_NOM{auteur,#ID_AUTEUR}})]","[(#EMAIL|sinon{#INFO_EMAIL{auteur,#ID_AUTEUR}})]","[(#DATE|affdate{'d/m/Y H:i:s'})]","#REPONSE"
</BOUCLE_participants></BOUCLE_evt>
<?php
} else {
include_spip('inc/minipres');
echo minipres();
-}?></BOUCLE0>
+}?></BOUCLE0>
\ No newline at end of file
* @return object\r
*/\r
function balise_NB_INSCRITS_dist($p) {\r
- $id_evenement = champ_sql('id_evenement', $p);\r
- $p->code = "sql_countsel('spip_evenements_participants','id_evenement='.intval($id_evenement).' AND reponse=\'oui\'')";\r
- return $p;\r
+ $id_evenement = champ_sql('id_evenement', $p);\r
+ $p->code = "sql_countsel('spip_evenements_participants','id_evenement='.intval($id_evenement).' AND reponse=\'oui\'')";\r
+ return $p;\r
}\r
\r
?>\r
X-WR-TIMEZONE:Europe/Paris
CALSCALE:GREGORIAN
PRODID:-//SPIP/Plugin #PLUGIN{AGENDA,nom}//NONSGML v1.0//FR
+<BOUCLE_art(ARTICLES){id_article}>
+X-WR-CALNAME;VALUE=TEXT:[(#NOM_SITE_SPIP|filtrer_ical)] - [(#TITRE|supprimer_tags|filtrer_ical)][
+X-WR-CALDESC:(#INTRODUCTION|supprimer_tags|filtrer_ical)]
+X-WR-RELCALID:[(#URL_ARTICLE|filtrer_ical)]
+</BOUCLE_art>
+</B_art>
X-WR-CALNAME;VALUE=TEXT:[(#NOM_SITE_SPIP|filtrer_ical)] -- Agenda[
-X-WR-CALDESC:(#DESCRIPTIF_SITE_SPIP|supprimer_tags|filtrer_ical)]
+X-WR-CALDESC:(#DESCRIPTION_SITE_SPIP|supprimer_tags|filtrer_ical)]
X-WR-RELCALID:[(#URL_SITE_SPIP|filtrer_ical)]
-<BOUCLE_evenement2(EVENEMENTS) {branche ?}{id_article ?} {statut=publie}{par date_fin} {age_fin<=0} {0,50} {doublons}>[(#INCLURE{fond=inc/un-evenement-ical}{evtitre=#TITRE}{id_evenement}{date_debut}{horaire}{date_fin}{id_article}{descriptif}{lieu})]
-</BOUCLE_evenement2><BOUCLE_evenement3(EVENEMENTS) {branche ?}{id_article ?} {statut=publie}{par date_fin} {age_fin>=0} {inverse} {0,50} {doublons}>[(#INCLURE{fond=inc/un-evenement-ical}{evtitre=#TITRE}{id_evenement}{date_debut}{horaire}{date_fin}{id_article}{descriptif}{lieu})]
-</BOUCLE_evenement3><BOUCLE_evenement(EVENEMENTS) {branche ?}{id_article ?} {statut=publie}{par date_fin} {inverse} {0,50} {doublons}>[(#INCLURE{fond=inc/un-evenement-ical}{evtitre=#TITRE}{id_evenement}{date_debut}{horaire}{date_fin}{id_article}{descriptif}{lieu})]
+<//B_art>
+<BOUCLE_evenement2(EVENEMENTS) {branche ?}{id_article ?} {statut=publie}{par date_fin} {age_fin<=0} {0,50} {doublons}>[(#INCLURE{fond=inc/un-evenement-ical}{evtitre=#TITRE}{id_evenement}{date_debut}{horaire}{date_fin}{id_article}{descriptif}{lieu}{date_creation}{maj})]
+</BOUCLE_evenement2><BOUCLE_evenement3(EVENEMENTS) {branche ?}{id_article ?} {statut=publie}{par date_fin} {age_fin>=0} {inverse} {0,50} {doublons}>[(#INCLURE{fond=inc/un-evenement-ical}{evtitre=#TITRE}{id_evenement}{date_debut}{horaire}{date_fin}{id_article}{descriptif}{lieu}{date_creation}{maj})]
+</BOUCLE_evenement3><BOUCLE_evenement(EVENEMENTS) {branche ?}{id_article ?} {statut=publie}{par date_fin} {inverse} {0,50} {doublons}>[(#INCLURE{fond=inc/un-evenement-ical}{evtitre=#TITRE}{id_evenement}{date_debut}{horaire}{date_fin}{id_article}{descriptif}{lieu}{date_creation}{maj})]
</BOUCLE_evenement>END:VCALENDAR
--- /dev/null
+[(#REM)
+
+ Squelette
+ (c) 2009 xxx
+ Distribue sous licence GPL
+
+]
+<B_mois>
+#ANCRE_PAGINATION
+<ul class="liste-items">
+<BOUCLE_mois(EVENEMENTS){!par date_debut}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}{fusion_par_mois date_debut}{pagination 10}>
+<li class="item">[(#SELF|parametre_url{date_debut,#DATE_DEBUT|affdate{Y-m-01}}|lien_ou_expose{#DATE_DEBUT|affdate_mois_annee{},#ENV{date_debut,''}|=={#DATE_DEBUT|affdate{Y-m-01}}})]</li>
+</BOUCLE_mois>
+</ul>
+[<div class="pagination">(#PAGINATION)</div>]
+</B_mois>
\ No newline at end of file
--- /dev/null
+<ul class="breadcrumb">
+ <li><a href="#URL_SITE_SPIP/"><:accueil_site:></a><span class="divider"> > </span></li>
+ <li class="active">[(#CONFIG{agenda/titre}|sinon{<:agenda:titre_sur_l_agenda:>}|typo)]</li>
+</ul>
\ No newline at end of file
<section>
<header class="cartouche">
- <h1>[(#CONFIG{agenda/titre}|sinon{<:agenda:titre_sur_l_agenda:>}|entites_html)]</h1>
+ <h1 class="#EDIT{meta-agenda/titre}">[(#CONFIG{agenda/titre}|sinon{<:agenda:titre_sur_l_agenda:>}|typo)]</h1>
</header>
- [<div class="chapo">(#CONFIG{agenda/descriptif}|propre)</div>]
+ [<div class="chapo #EDIT{meta-agenda/descriptif}">(#CONFIG{agenda/descriptif}|propre)</div>]
<div class="main">
<INCLURE{fond=inclure/agenda-liste,env,ajax} />
<p><:agenda:info_aucun_evenement:></p>
<//B_ev>
</div>
-</section>
\ No newline at end of file
+</section>
--- /dev/null
+[(#REM)
+
+ Squelette
+ (c) 2009 xxx
+ Distribue sous licence GPL
+
+]
+#SET{id_article,#ENV{id_article,''}}
+<BOUCLE_ev(EVENEMENTS){id_evenement}>
+#CALENDRIER_MINI{#DATE_DEBUT,date_debut,#URL_PAGE{jour},#URL_PAGE{calendrier_mini_event.json,id_article=#ID_ARTICLE}}
+#SET{id_article,#ID_ARTICLE}
+</BOUCLE_ev>
+#CALENDRIER_MINI{#DATE_DEBUT,date_debut,#URL_PAGE{jour},#URL_PAGE{calendrier_mini_event.json}|parametre_url{id_article,#GET{id_article}}|parametre_url{id_rubrique,#GET{id_rubrique}}}
+<//B_ev>
+
+<INCLURE{fond=inclure/agenda-evenements-meme-article,id_article=#GET{id_article},env,ajax} />
\ No newline at end of file
--- /dev/null
+[(#REM)
+
+ Squelette
+ (c) 2009 xxx
+ Distribue sous licence GPL
+
+]
+<INCLURE{fond=extra1/agenda,env} />
\ No newline at end of file
--- /dev/null
+[(#REM)
+
+ Squelette
+ (c) 2009 xxx
+ Distribue sous licence GPL
+
+]
+<INCLURE{fond=extra1/agenda,env} />
\ No newline at end of file
--- /dev/null
+[(#REM)
+
+ Squelette
+ (c) 2009 xxx
+ Distribue sous licence GPL
+
+]
+<INCLURE{fond=extra1/agenda,env} />
\ No newline at end of file
<div class="pagination">
#SET{hasprev,''}
- <BOUCLE_prev(EVENEMENTS){!evenement_a_venir #GET{date_debut}}{0,1}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}>#SET{hasprev,1}</BOUCLE_prev>
+ <BOUCLE_prev(EVENEMENTS){id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}{!evenement_a_venir #GET{date_prev}}{0,1}>#SET{hasprev,1}</BOUCLE_prev>
#SET{hasnext,''}
- <BOUCLE_next(EVENEMENTS){!evenement_passe #GET{date_fin}}{0,1}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}>#SET{hasnext,1}</BOUCLE_next>
+ <BOUCLE_next(EVENEMENTS){id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}{!evenement_passe #GET{date_fin}}{0,1}>#SET{hasnext,1}</BOUCLE_next>
+ [(#GET{hasprev}|=={1}|ou{#GET{hasnext}|=={1}}|oui)
[(#INCLURE{fond=modeles/pagination_precedent_suivant,
label_precedent=#GET{date_prev}|affdate_periode{#GET{affichage_duree}},
label_suivant=#GET{date_fin}|affdate_periode{#GET{affichage_duree}},
url_precedent=#SELF|parametre_url{date_debut,#GET{date_prev}|affdate{Y-m-d}},
url_suivant=#SELF|parametre_url{date_debut,#GET{date_fin}|affdate{Y-m-d}},
ancre=agenda-liste,
- separateur=' | ',
- })]
+ separateur=' | '})]]
</div>
</div>
\ No newline at end of file
<BOUCLE_vevent(EVENEMENTS){id_evenement=#ENV{id,#ENV{id_evenement}}}{tout}>
-<article class="entry evenement vevent id_#ID_EVENEMENT" itemscope itemtype="http://schema.org/Event">
- <span class="banner"><span class="label label-inverse"><b class="day">[(#DATE_DEBUT|jour)]</b> <b class="month">[(#DATE_DEBUT|nom_mois)]</b> <b class="year">[(#DATE_DEBUT|annee)]</b></span></span>
- <strong class="h3-like summary entry-title"><a itemprop="url" class="url" href="[(#URL_EVENEMENT)]">[(#LOGO_EVENEMENT|image_reduire{150,100}|inserer_attribut{itemprop,image})]<span itemprop="name">#TITRE</span><span
+[(#SET{annee,#DATE_DEBUT|annee})][(#SET{mois,#DATE_DEBUT|nom_mois})][(#SET{jour,#DATE_DEBUT|jour})]
+<article class="entry evenement vevent id_#ID_EVENEMENT" id="evenement_#ID_EVENEMENT" itemscope itemtype="http://schema.org/Event">
+ <span class="banner #EDIT{date_debut}"><span class="label label-inverse"><:agenda:date_fmt_agenda_label{annee=#GET{annee},mois=#GET{mois},jour=#GET{jour}}:></span></span>
+ <strong class="h3-like summary entry-title #EDIT{titre}"><a itemprop="url" class="url" href="[(#URL_EVENEMENT)]">[(#LOGO_EVENEMENT|image_reduire{150,100}|inserer_attribut{itemprop,image})]<span itemprop="name">#TITRE</span><span
class="lire-la-suite hide"><i class="icon-chevron-right" title="<:zpip:lire_la_suite|attribut_html:><:zpip:lire_la_suite_de|attribut_html:>«[(#TITRE|attribut_html)]»"></i></span></a></strong>
<meta itemprop="startDate" content="[(#DATE_DEBUT|date_iso)]" />
<meta itemprop="endDate" content="[(#DATE_FIN|date_iso)]" />
- <p class="info-publi">[<time><i class="icon-calendar"></i> (#DATE_DEBUT|agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE,'hcal'})</time>]</p>
+ [<p class="info-publi"><time><i class="icon-calendar"></i> (#DATE_DEBUT|agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE*,'hcal'})</time></p>]
+ #SET{intro,''}<BOUCLE_art(ARTICLES){si #ENV{sinon_intro_article,oui}|=={non}|ou{#ENV{intro}|=={non}}|non}{id_article}>#SET{intro,#INTRODUCTION{#ENV{coupe,300}}</BOUCLE_art>
+ [(#ENV{intro,oui}|=={non}|non|et{#DESCRIPTIF}|oui)[(#SET{intro,[<div class="introduction #EDIT{descriptif}" itemprop="description">(#DESCRIPTIF|sinon{#GET{intro}})</div>]})]]
+ [(#GET{intro}|ou{#LIEU}|ou{#ADRESSE}|oui)
<div class="entry-content">
- #SET{intro,''}<BOUCLE_art(ARTICLES){id_article}>#SET{intro,#INTRODUCTION{#ENV{coupe,300}}</BOUCLE_art>
- [<div class="introduction #EDIT{descriptif}" itemprop="description">(#DESCRIPTIF|sinon{#GET{intro}})</div>]
-
- [<p class="location" itemprop="location"><span class="lieu #EDIT{lieu}">(#LIEU)</span>[<br /><span class="adresse #EDIT{adresse}">(#ADRESSE|PtoBR)</span>]</p>]
- </div>
+ #GET{intro}
+ [<p class="location" itemprop="location"><span class="lieu #EDIT{lieu}">(#LIEU)</span>[<br /><span class="adresse #EDIT{adresse}">(#ADRESSE|PtoBR)</span>]</p>]
+ </div>]
+ <B_mots>
<p class="meta-publi">
- [(#INSCRIPTION|?{' ',''})<span class="inscrits"><span class="sep">|</span> <i class="icon-user" title="#NB_INSCRITS[/(#PLACES) ] <:agenda:inscrits|attribut_html:>"></i> #NB_INSCRITS[/(#PLACES) ]</span>]
- <B_mots><span class="sep">|</span> <BOUCLE_mots(MOTS){id_evenement}{par num titre,titre}{', '}><span class="category"><i class="icon-tag"></i> #TITRE</span></BOUCLE_mots>
+ [(#INSCRIPTION|?{' ',''})<span class="inscrits"><span class="sep">|</span> <i class="icon-user" title="#NB_INSCRITS[/#PLACES(#PLACES|>{0}|oui)] <:agenda:inscrits|attribut_html:>"></i> #NB_INSCRITS[/#PLACES(#PLACES|>{0}|oui)]</span>]
+ <span class="sep">|</span> <BOUCLE_mots(MOTS){id_evenement}{par num titre,titre}{', '}><span class="category"><i class="icon-tag"></i> #TITRE</span></BOUCLE_mots>
</p>
+ </B_mots>
+ [(#INSCRIPTION|?{' ',''})<p class="meta-publi"><span class="inscrits"><span class="sep">|</span> <i class="icon-user" title="#NB_INSCRITS[/#PLACES(#PLACES|>{0}|oui)] <:agenda:inscrits|attribut_html:>"></i> #NB_INSCRITS[/#PLACES(#PLACES|>{0}|oui)]</span></p>]
+ <//B_mots>
</article>
-</BOUCLE_vevent>
+</BOUCLE_vevent>
\ No newline at end of file
<svn_revision>
<text_version>
Origine: file:///home/svn/repository/spip-zone/_plugins_/agenda/trunk
-Revision: 72384
-Dernier commit: 2013-04-27 14:00:20 +0200
+Revision: 93548
+Dernier commit: 2015-12-11 17:15:07 +0100
</text_version>
<origine>file:///home/svn/repository/spip-zone/_plugins_/agenda/trunk</origine>
-<revision>72384</revision>
-<commit>2013-04-27 14:00:20 +0200 </commit>
+<revision>93548</revision>
+<commit>2015-12-11 17:15:07 +0100 </commit>
</svn_revision>
\ No newline at end of file
* #CALENDRIER_MINI{#ENV{date},date,#SELF}
* #CALENDRIER_MINI{#ENV{date},date,#SELF,#URL_PAGE{calendrier_mini.json}}
*
- * Quand l'url json est explicitée dans les arguments, la collecte automatisée de id_rubrique, id_article et id_mot est desactivée
+ * Quand l'url json est explicitee dans les arguments, la collecte automatisee de id_rubrique, id_article et id_mot est desactivee
* car dans ce cas il suffit simplement de les expliciter sur l'url json pour les prendre en compte
*
* @param string $date
-<?php\r
-\r
-/**\r
- * Balises et critères du calendrier mini\r
- *\r
- * @package SPIP\CalendrierMini\Fonctions\r
-**/\r
-\r
-if (!defined("_ECRIRE_INC_VERSION")) return; #securite\r
-\r
-if (!defined('VAR_DATE')) define('VAR_DATE', 'archives');\r
-\r
-function balise_DATE_ARCHIVES($p) {\r
- $p->code = "_request('".VAR_DATE."')";\r
-\r
- #$p->interdire_scripts = true;\r
- return $p;\r
-}\r
-\r
-function critere_archives($idb, &$boucles, $crit) {\r
- $boucle = &$boucles[$idb];\r
- $objet = objet_type($boucle->id_table);\r
- $date = objet_info($objet,'date');\r
- $champ_date = "'" . $boucle->id_table ."." .\r
- $date . "'";\r
- $boucle->where[] = array(\r
- 'REGEXP',\r
- $champ_date, \r
- "sql_quote(('^' . interdire_scripts(entites_html(\$Pile[0]['".VAR_DATE."']))))"\r
- );\r
-}\r
-\r
-/**\r
- * Crée un array d'un intervalle de jour entre la date de début $start et la date de fin $end\r
- * \r
- * $start datetime SQL - La date de début\r
- * $end datetime SQL La date de fin\r
- */\r
-function calendriermini_intervalle($start,$end=false){\r
- $jours = array();\r
- $starttime = strtotime($start);\r
- $startdate = date('Y-m-d',$starttime);\r
- $jours[] = $startdate;\r
- if(!$end){\r
- return $jours;\r
- }\r
- $endtime = strtotime($end);\r
- $enddate = date('Y-m-d',strtotime($end));\r
- $starttime = $starttime + (3600*24);\r
- while(($date_test = date('Y-m-d',$starttime)) < $enddate){\r
- $jours[] = $date_test;\r
- $starttime = $starttime + (3600*24);\r
- }\r
- $jours[] = $enddate;\r
- return array_unique($jours);\r
-}\r
-?>\r
+<?php
+
+/**
+ * Balises et critères du calendrier mini
+ *
+ * @package SPIP\CalendrierMini\Fonctions
+**/
+
+if (!defined("_ECRIRE_INC_VERSION")) return; #securite
+
+if (!defined('VAR_DATE')) define('VAR_DATE', 'archives');
+
+function balise_DATE_ARCHIVES($p) {
+ $p->code = "_request('".VAR_DATE."')";
+
+ #$p->interdire_scripts = true;
+ return $p;
+}
+
+function critere_archives($idb, &$boucles, $crit) {
+ $boucle = &$boucles[$idb];
+ $objet = objet_type($boucle->id_table);
+ $date = objet_info($objet,'date');
+ $champ_date = "'" . $boucle->id_table ."." .
+ $date . "'";
+ $boucle->where[] = array(
+ "'REGEXP'",
+ $champ_date,
+ "sql_quote(('^' . interdire_scripts(entites_html(@\$Pile[0]['".VAR_DATE."']))))"
+ );
+}
+
+/**
+ * Crée un array d'un intervalle de jour entre la date de début $start et la date de fin $end
+ *
+ * $start datetime SQL - La date de début
+ * $end datetime SQL La date de fin
+ */
+function calendriermini_intervalle($start,$end=false){
+ $jours = array();
+ $starttime = strtotime($start);
+ $startdate = date('Y-m-d',$starttime);
+ $jours[] = $startdate;
+ if(!$end){
+ return $jours;
+ }
+ $endtime = strtotime($end);
+ $enddate = date('Y-m-d',strtotime($end));
+ $starttime = $starttime + (3600*24);
+ while(($date_test = date('Y-m-d',$starttime)) < $enddate){
+ $jours[] = $date_test;
+ $starttime = $starttime + (3600*24);
+ }
+ $jours[] = $enddate;
+ return array_unique($jours);
+}
+?>
data-url="#ENV{self}"
data-vardate="#ENV{var_date}"
>[(#REM)
-
Contenu alternatif statique pour les Bot et les utilisateurs sans JS
]<div class="alt">
#SET{start,#ENV{date}|affdate{Y-m-01}|strtotime}
#SET{end,#VAL{Y-m-01}|date{#GET{start}|plus{2764800}}|strtotime}
- #SET{url,#GET{urljson}|parametre_url{start,#GET{start},'&'}|parametre_url{end,#GET{end},'&'}|url_absolue}
+ [(#SET{url,#INCLURE{fond=#GET{urljson}|parametre_url{page},
+ id_rubrique=#GET{urljson}|parametre_url{id_rubrique},
+ id_article=#GET{urljson}|parametre_url{id_articlee},
+ id_mot=#GET{urljson}|parametre_url{id_mot},
+ lang=#GET{urljson}|parametre_url{lang},
+ start=#GET{start},
+ end=#GET{end}}})]
<strong>[(#ENV{date}|affdate_mois_annee)] :</strong>
<B_alt>
<ul class="liste-items">
]<style type="text/css">
[(#INCLURE{css/minical.css}|compacte{css})]
.calendriermini .ui-datepicker-header .ui-icon {background-image: url("#CHEMIN{css/img/month_prev_next-32x16.png}");}
-</style>
\ No newline at end of file
+</style>
</BOUCLE_jours>
</select>
</li>
- #SET{name,format_jour}#SET{defaut,1}#SET{obli,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+ #SET{name,format_jour}#SET{defaut,initiale}#SET{obli,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label>[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
#HTTP_HEADER{Content-type:text/javascript}
if (!jQuery.fn.datepicker){
-#INCLURE{javascript/ui/jquery.ui.core.js}
-#INCLURE{javascript/ui/jquery.ui.widget.js}
-#INCLURE{javascript/ui/jquery.ui.datepicker.js}
+[(#INCLURE{javascript/ui/core.js}|sinon{#INCLURE{javascript/ui/jquery.ui.core.js}})]
+[(#INCLURE{javascript/ui/widget.js}|sinon{#INCLURE{javascript/ui/jquery.ui.widget.js}})]
+[(#INCLURE{javascript/ui/datepicker.js}|sinon{#INCLURE{javascript/ui/jquery.ui.datepicker.js}})]
}
if (!jQuery.fn.multiDatesPicker){
#INCLURE{javascript/jquery-ui.multidatespicker.js}
'<:date_mois_1_abbr|texte_script:>','<:date_mois_2_abbr|texte_script:>','<:date_mois_3_abbr|texte_script:>','<:date_mois_4_abbr|texte_script:>','<:date_mois_5_abbr|texte_script:>','<:date_mois_6_abbr|texte_script:>',
'<:date_mois_7_abbr|texte_script:>','<:date_mois_8_abbr|texte_script:>','<:date_mois_9_abbr|texte_script:>','<:date_mois_10_abbr|texte_script:>','<:date_mois_11_abbr|texte_script:>','<:date_mois_12_abbr|texte_script:>'],
dayNames: [
- '<:date_jour_1|texte_script:>','<:date_jour_2|texte_script:>','<:date_jour_3|texte_script:>','<:date_jour_4:|texte_script:>',
+ '<:date_jour_1|texte_script:>','<:date_jour_2|texte_script:>','<:date_jour_3|texte_script:>','<:date_jour_4|texte_script:>',
'<:date_jour_5|texte_script:>','<:date_jour_6|texte_script:>','<:date_jour_7|texte_script:>'],
dayNamesShort: [
'<:date_jour_1_abbr|texte_script:>','<:date_jour_2_abbr|texte_script:>','<:date_jour_3_abbr|texte_script:>','<:date_jour_4_abbr|texte_script:>',
<traduction module="minical" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/calendrier_mini/trunk/lang/" reference="fr">
- <langue code="en" url="http://trad.spip.net/tradlang_module/minical?lang_cible=en">
+ <langue code="ar" url="http://trad.spip.net/tradlang_module/minical?lang_cible=ar" total="14" traduits="3" relire="0" modifs="0" nouveaux="11" pourcent="21.43">
+ <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+ <langue code="de" url="http://trad.spip.net/tradlang_module/minical?lang_cible=de" total="14" traduits="14" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Torsten Willmann" lien="http://trad.spip.net/auteur/torsten-willmann" />
+ </langue>
+ <langue code="en" url="http://trad.spip.net/tradlang_module/minical?lang_cible=en" total="14" traduits="14" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
<traducteur nom="Martin McCaffery" lien="http://trad.spip.net/auteur/martin-mccaffery" />
</langue>
- <langue code="es" url="http://trad.spip.net/tradlang_module/minical?lang_cible=es">
- <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+ <langue code="es" url="http://trad.spip.net/tradlang_module/minical?lang_cible=es" total="14" traduits="14" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+ </langue>
+ <langue code="fa" url="http://trad.spip.net/tradlang_module/minical?lang_cible=fa" total="14" traduits="3" relire="0" modifs="0" nouveaux="11" pourcent="21.43">
+ <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
+ </langue>
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/minical?lang_cible=fr" total="14" traduits="14" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/minical?lang_cible=nl" total="14" traduits="14" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
</langue>
- <langue code="fr" />
- <langue code="sk" url="http://trad.spip.net/tradlang_module/minical?lang_cible=sk">
+ <langue code="oc_ni_mis" url="http://trad.spip.net/tradlang_module/minical?lang_cible=oc_ni_mis" total="14" traduits="14" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="sylvain" lien="http://trad.spip.net/auteur/sylvain" />
+ </langue>
+ <langue code="ru" url="http://trad.spip.net/tradlang_module/minical?lang_cible=ru" total="14" traduits="14" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="olly" lien="http://trad.spip.net/auteur/olly" />
+ </langue>
+ <langue code="sk" url="http://trad.spip.net/tradlang_module/minical?lang_cible=sk" total="14" traduits="14" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
</langue>
+ <langue code="sl" url="http://trad.spip.net/tradlang_module/minical?lang_cible=sl" total="14" traduits="3" relire="0" modifs="0" nouveaux="11" pourcent="21.43">
+ <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
+ </langue>
</traduction>
+++ /dev/null
-<?php
-// This is a SPIP language file -- Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://trad.spip.org/tradlang_module/minical?lang_cible=ca
-// ** ne pas modifier le fichier **
-
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
- // A
- 'aucune_date' => 'Rien pour ce mois', # NEW
-
- // D
- 'date_jour_abbr_1' => 'dg',
- 'date_jour_abbr_2' => 'dl',
- 'date_jour_abbr_3' => 'dt',
- 'date_jour_abbr_4' => 'dc',
- 'date_jour_abbr_5' => 'dj',
- 'date_jour_abbr_6' => 'dv',
- 'date_jour_abbr_7' => 'db',
-
- // M
- 'mois_precedent' => 'Mois précédent', # NEW
- 'mois_suivant' => 'Mois suivant' # NEW
-);
-
-?>
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://trad.spip.org/tradlang_module/minical?lang_cible=de
+// extrait automatiquement de http://trad.spip.net/tradlang_module/minical?lang_cible=de
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
- 'aucune_date' => 'Rien pour ce mois', # NEW
+ 'aucune_date' => 'Nichts in diesem Monat',
- // D
- 'date_jour_abbr_1' => 'So',
- 'date_jour_abbr_2' => 'Mo',
- 'date_jour_abbr_3' => 'Di',
- 'date_jour_abbr_4' => 'Mi',
- 'date_jour_abbr_5' => 'Do',
- 'date_jour_abbr_6' => 'Fr',
- 'date_jour_abbr_7' => 'Sa',
+ // C
+ 'config_titre_calendriermini' => 'Mini-Kalender',
+
+ // L
+ 'label_affichage_hors_mois' => 'Angezeigte Tage',
+ 'label_affichage_hors_mois_0' => 'Tage des folgenden und des vorherigen Monats verstecken',
+ 'label_affichage_hors_mois_1' => 'Tage des folgenden und des vorherigen Monats anzeigen',
+ 'label_changement_rapide' => 'Navigation',
+ 'label_changement_rapide_0' => 'Schnellauswahl von Jahr und Monat deaktivieren',
+ 'label_changement_rapide_1' => 'Schnellauswahl für Monat und Jahr aktivieren',
+ 'label_format_jour' => 'Format der Tagesanzeige',
+ 'label_format_jour_abbr' => 'Abkürzung',
+ 'label_format_jour_initiale' => 'Anfangsbuchstabe',
+ 'label_jour1' => 'Erster Tag der Woche',
// M
- 'mois_precedent' => 'Mois précédent', # NEW
- 'mois_suivant' => 'Mois suivant' # NEW
+ 'mois_precedent' => 'Voriger Monat',
+ 'mois_suivant' => 'Folgender Monat'
);
?>
'label_affichage_hors_mois_0' => 'Masquer les jours des mois précédent et suivant',
'label_affichage_hors_mois_1' => 'Afficher les jours des mois précédent et suivant',
'label_changement_rapide' => 'Navigation',
- 'label_changement_rapide_0' => 'Désactiver la sélection rapide du mois ou de l\'année',
- 'label_changement_rapide_1' => 'Activer la sélection rapide du mois ou de l\'année',
+ 'label_changement_rapide_0' => 'Désactiver la sélection rapide du mois ou de l’année',
+ 'label_changement_rapide_1' => 'Activer la sélection rapide du mois ou de l’année',
'label_format_jour' => 'Format des jours',
'label_format_jour_abbr' => 'Court',
'label_format_jour_initiale' => 'Initiale',
+++ /dev/null
-<?php
-// This is a SPIP language file -- Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://trad.spip.org/tradlang_module/minical?lang_cible=it
-// ** ne pas modifier le fichier **
-
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
- // A
- 'aucune_date' => 'Rien pour ce mois', # NEW
-
- // D
- 'date_jour_abbr_1' => 'dom',
- 'date_jour_abbr_2' => 'lun',
- 'date_jour_abbr_3' => 'mar',
- 'date_jour_abbr_4' => 'mer',
- 'date_jour_abbr_5' => 'giov',
- 'date_jour_abbr_6' => 'ven',
- 'date_jour_abbr_7' => 'sab',
-
- // M
- 'mois_precedent' => 'Mois précédent', # NEW
- 'mois_suivant' => 'Mois suivant' # NEW
-);
-
-?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/minical?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_date' => 'Niets voor deze maand',
+
+ // C
+ 'config_titre_calendriermini' => 'Mini-Kalender',
+
+ // L
+ 'label_affichage_hors_mois' => 'Getoonde dagen',
+ 'label_affichage_hors_mois_0' => 'Verberg de dagen van de vorige en volgende maand',
+ 'label_affichage_hors_mois_1' => 'Toon de dagen van de vorige en volgende maand',
+ 'label_changement_rapide' => 'Navigatie',
+ 'label_changement_rapide_0' => 'Desactiveer de snelkeuze van maand of jaar',
+ 'label_changement_rapide_1' => 'Activeer de snelkeuze van maand of jaar',
+ 'label_format_jour' => 'Dagformaat',
+ 'label_format_jour_abbr' => 'Kort',
+ 'label_format_jour_initiale' => 'Beginletter',
+ 'label_jour1' => 'Eerste dag van de week',
+
+ // M
+ 'mois_precedent' => 'Vorige maand',
+ 'mois_suivant' => 'Volgende maand'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/minical?lang_cible=oc_ni_mis
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_date' => 'Mìnga per aqueu mès',
+
+ // C
+ 'config_titre_calendriermini' => 'Mini-Calendari',
+
+ // L
+ 'label_affichage_hors_mois' => 'Jou afichat',
+ 'label_affichage_hors_mois_0' => 'Escoundre lu jou dei mès prechedent e seguent',
+ 'label_affichage_hors_mois_1' => 'Afichà lu jou dei mès prechedent e seguent',
+ 'label_changement_rapide' => 'Navigacioun',
+ 'label_changement_rapide_0' => 'Desativà la selecioun rapida dóu mès o de l’anada',
+ 'label_changement_rapide_1' => 'Ativà la selecioun rapida dóu mès o de l’anada',
+ 'label_format_jour' => 'Fourmat dei jou',
+ 'label_format_jour_abbr' => 'Court',
+ 'label_format_jour_initiale' => 'Iniciala',
+ 'label_jour1' => 'Premié jou de la semana',
+
+ // M
+ 'mois_precedent' => 'Mès prechedent',
+ 'mois_suivant' => 'Mès seguent'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/minical?lang_cible=ru
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_date' => 'Ничего в этом месяце',
+
+ // C
+ 'config_titre_calendriermini' => 'Мини-Календарь',
+
+ // L
+ 'label_affichage_hors_mois' => 'Дни показаны',
+ 'label_affichage_hors_mois_0' => 'Скрыть дни предыдущего и следующего месяцев',
+ 'label_affichage_hors_mois_1' => 'Показать дни предыдущих и последующих месяцев',
+ 'label_changement_rapide' => 'Навигация',
+ 'label_changement_rapide_0' => 'Отключить быстрый выбор месяца или года',
+ 'label_changement_rapide_1' => 'Включить быстрый выбор месяца или года',
+ 'label_format_jour' => 'Формат дней',
+ 'label_format_jour_abbr' => 'Кратко',
+ 'label_format_jour_initiale' => 'Заглавная буква',
+ 'label_jour1' => 'Первый день недели',
+
+ // M
+ 'mois_precedent' => 'Предыдущий месяц',
+ 'mois_suivant' => 'Следующий месяц'
+);
+
+?>
<traduction module="paquet-calendriermini" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/calendrier_mini/trunk/lang/" reference="fr">
- <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=de">
+ <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=de" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="klaus++" lien="http://trad.spip.net/auteur/klaus" />
</langue>
- <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=en">
+ <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=en" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
</langue>
- <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=es">
- <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+ <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=es" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
</langue>
- <langue code="fr" />
- <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=sk">
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=fr" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=nl" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+ <langue code="oc_ni_mis" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=oc_ni_mis" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="sylvain" lien="http://trad.spip.net/auteur/sylvain" />
+ </langue>
+ <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=ru" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="olly" lien="http://trad.spip.net/auteur/olly" />
+ </langue>
+ <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=sk" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
</langue>
</traduction>
$GLOBALS[$GLOBALS['idx_lang']] = array(
// C
- 'calendriermini_description' => '#CALENDRIER_MINI displays a calendar designed as dotclear\'s one and therefore compatible with the styles from this blog system.
+ 'calendriermini_description' => '#CALENDRIER_MINI displays a calendar designed as dotclear’s one and therefore compatible with the styles from this blog system.
_ Other tools are added, such as tags, criteria, models...',
'calendriermini_nom' => 'Mini Calendar',
'calendriermini_slogan' => 'Allow to use a #CALENDRIER_MINI tag'
// C
'calendriermini_description' => '#CALENDRIER_MINI affiche un calendrier au design issu de dotclear et donc compatible avec les styles issus de ce système de blog.
-_ Lui sont adjoints d\'autre éléments, tels que balises, critères, modèles...',
+_ Lui sont adjoints d’autre éléments, tels que balises, critères, modèles...',
'calendriermini_nom' => 'Mini Calendrier',
- 'calendriermini_slogan' => 'Permet l\'utilisation d\'une balise #CALENDRIER_MINI'
+ 'calendriermini_slogan' => 'Permet l’utilisation d’une balise #CALENDRIER_MINI'
);
?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // C
+ 'calendriermini_description' => '#CALENDRIER_MINI toont een kalender in het dotclear ontwerp en is dus compatibel met de stijl van blogs.
+_ Er zijn extra elementen aan toegevoegd, zoals bakens, criteria, modellen...',
+ 'calendriermini_nom' => 'Mini Kalender',
+ 'calendriermini_slogan' => 'Maakt het gebruik van #CALENDRIER_MINI mogelijk'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=oc_ni_mis
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // C
+ 'calendriermini_description' => '#CALENDRIER_MINI afichà un calendari dau design que ven de dotclear e es pi coumpatible embé l’estile que ven d’aqueu sistèma de blog.
+_ Lì soun ajounch d’autre elemen couma balisa, critèri, moudel...',
+ 'calendriermini_nom' => 'Mini Calendari',
+ 'calendriermini_slogan' => 'Permete l’utilisacioun d’una balisa #CALENDRIER_MINI'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-calendriermini?lang_cible=ru
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // C
+ 'calendriermini_description' => '#CALENDRIER_MINI отображает календарь в соответствии с дизайном и стилями на сайте.
+_Добавлены другие инструменты: теги, критерии, модели...',
+ 'calendriermini_nom' => 'Мини-Календарь',
+ 'calendriermini_slogan' => 'Позволяет использовать тег #CALENDRIER_MINI'
+);
+
+?>
<B_archives_mensuelles>
<div id="archives" class="rubriques">
- <h2 class="menu-titre"><:archives|ucfirst:></h2>
- <ul>
- <BOUCLE_archives_mensuelles(ARTICLES){branche ?}{lang}{par date}{inverse}>[
- <li>
- <a href="[(#ENV{self}|parametre_url{archives,[(#DATE|affdate{'Y-m'})]})]">[
- (#ENV{archives}|=={[(#DATE|affdate{'Y-m'})]}|?{<b>})
- ](#DATE|affdate{'Y-m'}|unique|affdate_mois_annee)[
- (#ENV{archives}|=={[(#DATE|affdate{'Y-m'})]}|?{</b>})
- ]</a>
- </li>
- ]</BOUCLE_archives_mensuelles>
- </ul>
+ <h2 class="menu-titre"><:archives|ucfirst:></h2>
+ <ul>
+ <BOUCLE_archives_mensuelles(ARTICLES){branche ?}{lang}{par date}{inverse}>[
+ <li>
+ <a href="[(#ENV{self}|parametre_url{archives,[(#DATE|affdate{'Y-m'})]})]">[
+ (#ENV{archives}|=={[(#DATE|affdate{'Y-m'})]}|?{<b>})
+ ](#DATE|affdate{'Y-m'}|unique|affdate_mois_annee)[
+ (#ENV{archives}|=={[(#DATE|affdate{'Y-m'})]}|?{</b>})
+ ]</a>
+ </li>
+ ]</BOUCLE_archives_mensuelles>
+ </ul>
</div>
</B_archives_mensuelles>
\ No newline at end of file
<paquet
prefix="calendriermini"
categorie="date"
- version="2.3.4"
- etat="test"
- compatibilite="[3.0.0-beta;3.0.99]"
+ version="2.3.9"
+ etat="stable"
+ compatibilite="[3.0.0;3.1.*]"
logo="minical-32.png"
- documentation="http://www.spip-contrib.net/Calendrier-Mini-2-0"
->
+ documentation="http://contrib.spip.net/Calendrier-Mini-2-0"
+>
<nom>Mini Calendrier</nom>
<!-- Permet l'utilisation d'une balise #CALENDRIER_MINI -->
<copyright>2006-2012</copyright>
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
-</paquet>
+</paquet>
\ No newline at end of file
<svn_revision>
<text_version>
Origine: file:///home/svn/repository/spip-zone/_plugins_/calendrier_mini/trunk
-Revision: 69463
-Dernier commit: 2013-01-28 03:41:28 +0100
+Revision: 93150
+Dernier commit: 2015-11-24 23:00:03 +0100
</text_version>
<origine>file:///home/svn/repository/spip-zone/_plugins_/calendrier_mini/trunk</origine>
-<revision>69463</revision>
-<commit>2013-01-28 03:41:28 +0100 </commit>
+<revision>93150</revision>
+<commit>2015-11-24 23:00:03 +0100 </commit>
</svn_revision>
\ No newline at end of file
/**
* Plugin Spip-Bonux
* Le plugin qui lave plus SPIP que SPIP
- * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
+ * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue
* Licence GPL
*/
/**
* Plugin Spip-Bonux
* Le plugin qui lave plus SPIP que SPIP
- * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
+ * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue
* Licence GPL
*
* Fonctions d'export d'une requete sql ou d'un tableau
function exporter_csv_ligne($ligne, $delim = ',', $importer_charset = null) {
$output = join($delim, array_map('exporter_csv_champ', $ligne))."\r\n";
if ($importer_charset){
- $output = unicode2charset(html2unicode(charset2unicode($output)), $importer_charset);
+ $output = str_replace('’', '\'', $output);
+ $output = unicode2charset(html2unicode(charset2unicode($output)), $importer_charset);
}
return $output;
}
/**
* Plugin Spip-Bonux
* Le plugin qui lave plus SPIP que SPIP
- * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
+ * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue
* Licence GPL
*
* Fonctions de lecture d'un fichier CSV pour transformation en array()
<traduction module="paquet-spip_bonux" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/spip-bonux-3/lang/" reference="fr">
- <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ar">
+ <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ar" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
</langue>
- <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=en">
+ <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=de" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Martin" lien="http://trad.spip.net/auteur/martin" />
+ </langue>
+ <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="Gilles" lien="http://trad.spip.net/auteur/gilles" />
</langue>
- <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=es">
- <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+ <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+ </langue>
+ <langue code="fa" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fa" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
+ </langue>
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=nl" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
</langue>
- <langue code="fr" />
- <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ru">
+ <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ru" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
</langue>
- <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=sk">
+ <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=sk" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
</langue>
</traduction>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=de
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // S
+ 'spip_bonux_description' => 'Der Plug-in, der SPIPer wäscht als SPIP, mit tollen Geschenken drin!
+ Tabellen, Zähler, usw.',
+ 'spip_bonux_slogan' => 'Der Plug-in, der SPIPer wäscht als SPIP.'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fa
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // S
+ 'spip_bonux_description' => 'پلاگيني كه اسپيپ را از اسپيپ بهتر ميسازد، با هداياي داخلي قشنگ، تابلو، شمارشگر و غيره. ',
+ 'spip_bonux_slogan' => 'پلاگيني كه اسپيپ را از اسپيپ بهتر ميسازد '
+);
+
+?>
$GLOBALS[$GLOBALS['idx_lang']] = array(
// S
- 'spip_bonux_description' => 'Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans !
+ 'spip_bonux_description' => 'Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans !
Tableaux, compteur, etc.',
'spip_bonux_slogan' => 'Le plugin qui lave plus SPIP que SPIP.'
);
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // S
+ 'spip_bonux_description' => 'De plugin die SPIP nog SPIPper maakt met leuke extraatjes!
+ Tabellen, teller, enz.',
+ 'spip_bonux_slogan' => 'De plugin die SPIP nog SPIPper maakt.'
+);
+
+?>
<traduction module="spip_bonux" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/spip-bonux-3/lang/" reference="fr">
- <langue code="ar" />
- <langue code="en" />
- <langue code="es" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=es">
- <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+ <langue code="ar" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ar" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
</langue>
- <langue code="fr" />
- <langue code="ru" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ru">
+ <langue code="de" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=de" total="13" traduits="12" relire="0" modifs="1" nouveaux="0" pourcent="92.31">
+ <traducteur nom="Martin" lien="http://trad.spip.net/auteur/martin" />
+ </langue>
+ <langue code="en" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=en" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
+ </langue>
+ <langue code="es" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=es" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+ </langue>
+ <langue code="fa" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fa" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
+ </langue>
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fr" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=nl" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+ <langue code="ru" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ru" total="13" traduits="12" relire="0" modifs="1" nouveaux="0" pourcent="92.31">
<traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
</langue>
- <langue code="sk" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=sk">
+ <langue code="sk" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=sk" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
</langue>
</traduction>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=de
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'afficher_calendrier' => 'Kalender anzeigen',
+ 'annee_precedente' => 'Vorheriges Jahr', # MODIF
+ 'annee_suivante' => 'Folgendes Jahr',
+ 'annuler_recherche' => 'Suche abbrechen',
+
+ // B
+ 'bouton_fermer' => 'Schließen',
+
+ // E
+ 'erreur_date' => 'Dieses Datum ist nicht korrekt',
+ 'erreur_date_corrigee' => 'Das Datum wurde korrigiert',
+ 'erreur_heure' => 'Diese Uhrzeit ist nicht korrekt',
+ 'erreur_heure_corrigee' => 'Die Uhrzeit wurde korrigiert',
+
+ // I
+ 'id_rapide' => 'Schnelleingabe',
+
+ // M
+ 'mois_precedent' => 'Vorheriger Monat',
+ 'mois_suivant' => 'Folgender Monat',
+
+ // P
+ 'pages' => 'Seiten'
+);
+
+?>
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
- 'afficher_calendrier' => 'Show the calendar',
+ 'afficher_calendrier' => 'Display the calendar',
'annee_precedente' => 'Previous year',
'annee_suivante' => 'Next year',
'annuler_recherche' => 'Cancel the search',
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fa
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'afficher_calendrier' => 'نمايش تقويم ',
+ 'annee_precedente' => 'سال پيش ',
+ 'annee_suivante' => 'سال بعد',
+ 'annuler_recherche' => 'لغو جستجو',
+
+ // B
+ 'bouton_fermer' => 'بستن',
+
+ // E
+ 'erreur_date' => 'اين تاريخ غلط ست',
+ 'erreur_date_corrigee' => 'تاريخ تصحيح شده است',
+ 'erreur_heure' => 'اين ساعت غلط است',
+ 'erreur_heure_corrigee' => 'ساعت تصحيح شده است',
+
+ // I
+ 'id_rapide' => 'افزودن سريع ',
+
+ // M
+ 'mois_precedent' => 'ماه پيش ',
+ 'mois_suivant' => 'ماه بعد ',
+
+ // P
+ 'pages' => 'صفحهها'
+);
+
+?>
// A
'afficher_calendrier' => 'Afficher le calendrier',
- 'annee_precedente' => 'Anée précédente',
+ 'annee_precedente' => 'Année précédente',
'annee_suivante' => 'Année suivante',
'annuler_recherche' => 'Annuler la recherche',
'erreur_date' => 'Cette date est incorrecte',
'erreur_date_corrigee' => 'La date a été corrigée',
'erreur_heure' => 'Cette heure est incorrecte',
- 'erreur_heure_corrigee' => 'L\'heure a été corrigée',
+ 'erreur_heure_corrigee' => 'L’heure a été corrigée',
// I
'id_rapide' => 'Ajout rapide',
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'afficher_calendrier' => 'Toon de kalender',
+ 'annee_precedente' => 'Vorig jaar',
+ 'annee_suivante' => 'Volgend jaar',
+ 'annuler_recherche' => 'Stop met zoeken',
+
+ // B
+ 'bouton_fermer' => 'Sluiten',
+
+ // E
+ 'erreur_date' => 'Deze datum is onjuist',
+ 'erreur_date_corrigee' => 'De datum is aangepast',
+ 'erreur_heure' => 'Dit tijdstip is onjuist',
+ 'erreur_heure_corrigee' => 'De tijd is aangepast',
+
+ // I
+ 'id_rapide' => 'Voeg snel toe',
+
+ // M
+ 'mois_precedent' => 'Vorige maand',
+ 'mois_suivant' => 'Volgende maand',
+
+ // P
+ 'pages' => 'Blz.'
+);
+
+?>
// A
'afficher_calendrier' => 'Показать календарь',
- 'annee_precedente' => 'Предыдущий год',
+ 'annee_precedente' => 'Предыдущий год', # MODIF
'annee_suivante' => 'Следующий год',
'annuler_recherche' => 'Отменить поиск',
// A
'afficher_calendrier' => 'Zobraziť kalendár',
- 'annee_precedente' => 'Minulý rok',
- 'annee_suivante' => 'Budúci rok',
+ 'annee_precedente' => 'Predošlý rok',
+ 'annee_suivante' => 'Nasledujúci rok',
'annuler_recherche' => 'Zrušiť vyhľadávanie',
// B
--- /dev/null
+<?php
+/**
+ * This file is part of the array_column library
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @copyright Copyright (c) Ben Ramsey (http://benramsey.com)
+ * @license http://opensource.org/licenses/MIT MIT
+ */
+
+if (!function_exists('array_column')) {
+ /**
+ * Returns the values from a single column of the input array, identified by
+ * the $columnKey.
+ *
+ * Optionally, you may provide an $indexKey to index the values in the returned
+ * array by the values from the $indexKey column in the input array.
+ *
+ * @param array $input A multi-dimensional array (record set) from which to pull
+ * a column of values.
+ * @param mixed $columnKey The column of values to return. This value may be the
+ * integer key of the column you wish to retrieve, or it
+ * may be the string key name for an associative array.
+ * @param mixed $indexKey (Optional.) The column to use as the index/keys for
+ * the returned array. This value may be the integer key
+ * of the column, or it may be the string key name.
+ * @return array
+ */
+ function array_column($input = null, $columnKey = null, $indexKey = null)
+ {
+ // Using func_get_args() in order to check for proper number of
+ // parameters and trigger errors exactly as the built-in array_column()
+ // does in PHP 5.5.
+ $argc = func_num_args();
+ $params = func_get_args();
+
+ if ($argc < 2) {
+ trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING);
+ return null;
+ }
+
+ if (!is_array($params[0])) {
+ trigger_error(
+ 'array_column() expects parameter 1 to be array, ' . gettype($params[0]) . ' given',
+ E_USER_WARNING
+ );
+ return null;
+ }
+
+ if (!is_int($params[1])
+ && !is_float($params[1])
+ && !is_string($params[1])
+ && $params[1] !== null
+ && !(is_object($params[1]) && method_exists($params[1], '__toString'))
+ ) {
+ trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING);
+ return false;
+ }
+
+ if (isset($params[2])
+ && !is_int($params[2])
+ && !is_float($params[2])
+ && !is_string($params[2])
+ && !(is_object($params[2]) && method_exists($params[2], '__toString'))
+ ) {
+ trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING);
+ return false;
+ }
+
+ $paramsInput = $params[0];
+ $paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null;
+
+ $paramsIndexKey = null;
+ if (isset($params[2])) {
+ if (is_float($params[2]) || is_int($params[2])) {
+ $paramsIndexKey = (int) $params[2];
+ } else {
+ $paramsIndexKey = (string) $params[2];
+ }
+ }
+
+ $resultArray = array();
+
+ foreach ($paramsInput as $row) {
+ $key = $value = null;
+ $keySet = $valueSet = false;
+
+ if ($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row)) {
+ $keySet = true;
+ $key = (string) $row[$paramsIndexKey];
+ }
+
+ if ($paramsColumnKey === null) {
+ $valueSet = true;
+ $value = $row;
+ } elseif (is_array($row) && array_key_exists($paramsColumnKey, $row)) {
+ $valueSet = true;
+ $value = $row[$paramsColumnKey];
+ }
+
+ if ($valueSet) {
+ if ($keySet) {
+ $resultArray[$key] = $value;
+ } else {
+ $resultArray[] = $value;
+ }
+ }
+
+ }
+
+ return $resultArray;
+ }
+
+}
[<a href='[(#ENV{url}|parametre_url{#ENV{debut},''})]' class='lien_pagination' rel='nofollow'>(#GET{premiere}|>{1}|?{'...',''})</a> [<span class='sep separateur'>(#GET*{separateur})</span>]]
<BOUCLE_pages(POUR){tableau #GET{pages}}>
[(#SET{item, #VALEUR|moins{1}|mult{#ENV{pas}} })]
-[(#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|aoustrong{#VALEUR,#VALEUR|=={#ENV{page_courante}},lien_pagination,'',nofollow})]
+[(#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|lien_ou_expose{#VALEUR,#VALEUR|=={#ENV{page_courante}},lien_pagination,'',nofollow})]
[<span class='sep separateur'>(#VALEUR|<{#GET{derniere}}|?{#GET{separateur}})</span>]
</BOUCLE_pages>
[[<span class='sep separateur'>(#GET*{separateur})</span>] <a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}})]' class='lien_pagination' rel='nofollow'>(#GET{derniere}|<{#ENV{nombre_pages}}|?{'...',''})</a>]
<paquet
prefix="spip_bonux"
categorie="outil"
- version="3.0.5"
+ version="3.2.1"
etat="stable"
- compatibilite="[3.0.0-dev;3.1.*]"
+ compatibilite="[3.0.0;3.1.*]"
logo="img_pack/spip-bonux.png"
- documentation="http://www.spip-contrib.net/SPIP-Bonux"
->
+ documentation="http://contrib.spip.net/Bonux-pour-SPIP3"
+>
<nom>SPIP Bonux</nom>
<!-- Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans -->
<auteur>Matthieu Marcillaud</auteur>
<auteur>romy.tetue.net</auteur>
- <copyright>2008-2013</copyright>
+ <copyright>2008-2015</copyright>
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL</licence>
<pipeline nom="affichage_final" />
/**
* Plugin Spip-Bonux
* Le plugin qui lave plus SPIP que SPIP
- * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
+ * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue
* Licence GPL
*
*/
/**
* Plugin Spip-Bonux
* Le plugin qui lave plus SPIP que SPIP
- * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
+ * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue
* Licence GPL
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
- * http://www.spip-contrib.net/Classer-les-articles-par-nombre-de#forum409210
* Permet de faire un comptage par table liee
- * exemple
- * <BOUCLE1(AUTEURS){compteur articles}{par compteur_articles}>
- * #ID_AUTEUR : #COMPTEUR{articles}
- * </BOUCLE1>
- * pour avoir les auteurs classes par articles et le nombre d'article de chacun
*
- * @param unknown_type $idb
- * @param unknown_type $boucles
- * @param unknown_type $crit
+ * @syntaxe `{compteur table[, champ]}`
+ * @link http://www.spip-contrib.net/Classer-les-articles-par-nombre-de#forum409210
+ *
+ * @example
+ * Pour avoir les auteurs classes par articles et
+ * le nombre d'article de chacun :
+ *
+ * ```
+ * <BOUCLE1(AUTEURS){compteur articles}{par compteur_articles}>
+ * #ID_AUTEUR : #COMPTEUR{articles}
+ * </BOUCLE1>
+ * ```
+ *
+ * @note
+ * Avec un seul argument {compteur autre_table} le groupby est fait
+ * implicitement sur la cle primaire de la boucle en cours.
+ * Avec un second argument {compteur autre_table,champ_fusion}
+ * le groupby est fait sur le champ_fusion"
+ *
+ * @param string $idb
+ * Identifiant de la boucle
+ * @param Boucle[] $boucles
+ * AST du squelette
+ * @param Critere $crit
+ * Paramètres du critère dans cette boucle
+ * @param bool $left
+ * true pour utiliser un left join plutôt qu'un inner join.
+ * @return void
*/
function critere_compteur($idb, &$boucles, $crit, $left=false){
$boucle = &$boucles[$idb];
- $_fusion = calculer_liste($crit->param[1], array(), $boucles, $boucle->id_parent);
+ if (isset($crit->param[1])) {
+ $_fusion = calculer_liste($crit->param[1], array(), $boucles, $boucle->id_parent);
+ } else {
+ $_fusion = "''";
+ }
$params = $crit->param;
$table = reset($params);
$table = $table[0]->texte;
$op = false;
- if(preg_match(',^(\w+)([<>=])([0-9]+)$,',$table,$r)){
+ if (preg_match(',^(\w+)([<>=])([0-9]+)$,',$table,$r)){
$table=$r[1];
if (count($r)>=3) $op=$r[2];
if (count($r)>=4) $op_val=$r[3];
* Si la clé primaire est une clé multiple, on prend la première partie
* Utile pour compter les versions de spip_versions par exemple
*/
- if(count($types = explode(',',$type_id)) > 1)
+ if (count($types = explode(',',$type_id)) > 1)
$type_id = $types[0];
$table_sql = table_objet_sql($type);
/**
* Plugin Spip-Bonux
* Le plugin qui lave plus SPIP que SPIP
- * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
+ * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue
* Licence GPL
*
*/
/**
* Plugin Spip-Bonux
* Le plugin qui lave plus SPIP que SPIP
- * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
+ * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue
* Licence GPL
- *
+ *
*/
+// On inclu une bonne fois pour toutes array_column
+include_spip('lib/array_column/array_column');
+
if (_request('var_mode')=='preview'
AND $cle = _request('var_relecture')){
include_spip("spip_bonux_fonctions");
*/
if (!function_exists('_T_ou_typo')) {
function _T_ou_typo($valeur, $mode_typo='toujours') {
-
+
// Si la valeur est bien une chaine (et pas non plus un entier déguisé)
if (is_string($valeur) and !intval($valeur)){
// Si la chaine est du type <:truc:> on passe à _T()
- if (preg_match('/^\<:(.*?):\>$/', $valeur, $match))
+ if (preg_match('/^\<:(.*?):\>$/', $valeur, $match))
$valeur = _T($match[1]);
// Sinon on la passe a typo()
else {
if (!in_array($mode_typo, array('toujours', 'multi', 'jamais')))
$mode_typo = 'toujours';
-
+
if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)){
include_spip('inc/texte');
$valeur = typo($valeur);
* @param bool $avant Indique si l'insertion se fait avant la clé (par défaut c'est après)
* @return array Retourne le tableau avec l'insertion
*/
-if (!function_exists('array_insert')) {
-function array_insert($arr1, $cle, $arr2, $avant=false){
+if (!function_exists('spip_array_insert')) {
+function spip_array_insert($arr1, $cle, $arr2, $avant=false){
$index = array_search($cle, array_keys($arr1));
if($index === false){
$index = count($arr1); // insert @ end of array if $key not found
$array = $args[0];
if (!is_array($array))
return $array;
-
+
for ($i = 1; $i < count($args); $i++)
if (is_array($args[$i]))
$array = recurse($array, $args[$i]);
-
+
return $array;
}
}
+if (!function_exists('text_truncate')) {
+/**
+* Truncates text.
+*
+* Cuts a string to the length of $length and replaces the last characters
+* with the ending if the text is longer than length.
+*
+* ### Options:
+*
+* - `ending` Will be used as Ending and appended to the trimmed string
+* - `exact` If false, $text will not be cut mid-word
+* - `html` If true, HTML tags would be handled correctly
+*
+* @param string $text String to truncate.
+* @param integer $length Length of returned string, including ellipsis.
+* @param array $options An array of html attributes and options.
+* @return string Trimmed string.
+* @access public
+* @link http://book.cakephp.org/view/1469/Text#truncate-1625
+*/
+function text_truncate($text, $length = 100, $options = array()) {
+ $default = array(
+ 'ending' => '...', 'exact' => true, 'html' => false
+ );
+ $options = array_merge($default, $options);
+ extract($options);
+
+ if ($html) {
+ if (mb_strlen(preg_replace('/<.*?>/', '', $text)) <= $length) {
+ return $text;
+ }
+ $totalLength = mb_strlen(strip_tags($ending));
+ $openTags = array();
+ $truncate = '';
+
+ preg_match_all('/(<\/?([\w+]+)[^>]*>)?([^<>]*)/', $text, $tags, PREG_SET_ORDER);
+ foreach ($tags as $tag) {
+ if (!preg_match('/img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param/s', $tag[2])) {
+ if (preg_match('/<[\w]+[^>]*>/s', $tag[0])) {
+ array_unshift($openTags, $tag[2]);
+ } else if (preg_match('/<\/([\w]+)[^>]*>/s', $tag[0], $closeTag)) {
+ $pos = array_search($closeTag[1], $openTags);
+ if ($pos !== false) {
+ array_splice($openTags, $pos, 1);
+ }
+ }
+ }
+ $truncate .= $tag[1];
+
+ $contentLength = mb_strlen(preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', ' ', $tag[3]));
+ if ($contentLength + $totalLength > $length) {
+ $left = $length - $totalLength;
+ $entitiesLength = 0;
+ if (preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', $tag[3], $entities, PREG_OFFSET_CAPTURE)) {
+ foreach ($entities[0] as $entity) {
+ if ($entity[1] + 1 - $entitiesLength <= $left) {
+ $left--;
+ $entitiesLength += mb_strlen($entity[0]);
+ } else {
+ break;
+ }
+ }
+ }
+
+ $truncate .= mb_substr($tag[3], 0 , $left + $entitiesLength);
+ break;
+ } else {
+ $truncate .= $tag[3];
+ $totalLength += $contentLength;
+ }
+ if ($totalLength >= $length) {
+ break;
+ }
+ }
+ } else {
+ if (mb_strlen($text) <= $length) {
+ return $text;
+ } else {
+ $truncate = mb_substr($text, 0, $length - mb_strlen($ending));
+ }
+ }
+ if (!$exact) {
+ $spacepos = mb_strrpos($truncate, ' ');
+ if (isset($spacepos)) {
+ if ($html) {
+ $bits = mb_substr($truncate, $spacepos);
+ preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER);
+ if (!empty($droppedTags)) {
+ foreach ($droppedTags as $closingTag) {
+ if (!in_array($closingTag[1], $openTags)) {
+ array_unshift($openTags, $closingTag[1]);
+ }
+ }
+ }
+ }
+ $truncate = mb_substr($truncate, 0, $spacepos);
+ }
+ }
+ $truncate .= $ending;
-?>
+ if ($html) {
+ foreach ($openTags as $tag) {
+ $truncate .= '</'.$tag.'>';
+ }
+ }
+
+ return $truncate;
+}
+}
<svn_revision>
<text_version>
Origine: file:///home/svn/repository/spip-zone/_plugins_/spip-bonux-3
-Revision: 71958
-Dernier commit: 2013-04-11 18:00:24 +0200
+Revision: 90054
+Dernier commit: 2015-06-09 18:53:16 +0200
</text_version>
<origine>file:///home/svn/repository/spip-zone/_plugins_/spip-bonux-3</origine>
-<revision>71958</revision>
-<commit>2013-04-11 18:00:24 +0200 </commit>
+<revision>90054</revision>
+<commit>2015-06-09 18:53:16 +0200 </commit>
</svn_revision>
\ No newline at end of file